app uniapp 获取位置_uniApp 地图使用

  • Post author:
  • Post category:uniapp


uniApp 地图使用

2、地图分显示,和获取定位两部分;显示可选择腾讯地图、高德地图、百度地图

3、获取定位方法由 uniApp 提供,坐标为固定的 gcj02、即使设置类型 wgs84,也是得到 gcj02 坐标

创建地图

onReady() {

let vm = this

vm.map = uni.createMapContext(‘map2’, this)

vm.getLocation()

},

methods: {

//获取定位

getLocation() {

let vm = this

uni.getLocation({

type: ‘gcj02’,

geocode: true,//获取城市具体地址

success: (e) => {

if (e.address.city) {

vm.cityName = e.address.city

vm.poiName = e.address.poiName

vm.moveToLocation()

}

vm.latitude = e.latitude

vm.longitude = e.longitude

vm.run = ‘start’

vm.addDingwei()

},

fail: (e) => {

vm.longitude = 113.953834 //e.longitude

vm.latitude = 22.540235 //e.latitude

vm.run = ‘start’

vm.addDingwei()

},

})

},

//移动到指定位置

moveToLocation() {

let vm = this

let falg = Object.keys(vm.map).length

if (falg) {

vm.map.moveToLocation({

longitude: vm.longitude,

latitude: vm.latitude,

success: () => {}

})

}

},

//添加定位点

addDingwei() {

let vm = this,arr = [];

arr.push({

id: 0,

latitude: vm.latitude,

longitude: vm.longitude,

iconPath: ‘../../static/dingwei.png’,

callout: {

content: ‘删除此站点’, //文本

color: ‘#ffffff’, //文字颜色

fontSize: 14, //文本大小

borderRadius: 2, //边框圆角

bgColor: ‘#00c16f’, //背景颜色

display: ‘BYCLICK’, //点击显示

},

})

vm.markers = arr

},

//点击控件

controltap(e) {

let vm = this

if (e.detail.controlId === 0) {

vm.getLocation()

}

if (e.detail.controlId === 1) {

uni.chooseLocation({

success: (e) => {

vm.getLine(e)

}

})

}

},

//移动地图位置触发获取地图中心店坐标

regionchange(e) {

let vm = this

if (e.type != ‘begin’ && vm.run == ‘start’) {

vm.getCenterLocation()

}

},

}

唤醒第三方地图

//引入插件

import Map from ‘@/js_sdk/fx-openMap/openMap.js’

//既有起点也有终点

var options = {

origin: { //导航起点坐标和名称,如果不传则起点为当前位置

latitude: vm.latitude,

longitude: vm.longitude,

name: “大冲商务中心C座”

},

destination: { //导航终点点坐标和名称

latitude: item.latitude,

longitude: item.longitude,

name: item.name

},

mode: “drive” //导航方式 公交:bus驾车:drive(默认),步行:walk,骑行:bike

}

//只有有终点(起点默认为当前位置)

var options = {

destination: { //导航终点点坐标和名称

latitude: item.latitude,

longitude: item.longitude,

name: item.name

},

mode: “drive” //导航方式 公交:bus驾车:drive(默认),步行:walk,骑行:bike

}

Map.openMap(options, ‘gcj02’)

app 端生成导航线路

//引入插件

import Amap from ‘../../js_sdk/Lyn4ever-gaodeRoutePlanning/lyn4ever-gaode.js’;

//搜索路线

getLine(item) {

let vm = this

let latitude = JSON.stringify(vm.latitude).slice(0, 9),

longitude = JSON.stringify(vm.longitude).slice(0, 10);

let startPoi = longitude + ‘,’ + latitude;

let wayPoi = “”;

let endPoi = item.longitude + ‘,’ + item.latitude;

vm.polyline = []

if (window === undefined) {

Amap.line(startPoi, endPoi, wayPoi, function(res) {

vm.polyline.push(res)

});

Amap.markers(startPoi, endPoi, wayPoi, function(res) {

vm.markers = res

});

} else {

window.open(‘https://map.baidu.com/’)

}

},

阶段总结

1,运行环境判断 window === undefined?“app”:“h5”

2,变量样式获取使用 :style=”mapStyle”||:style=”coverView()”

3,造轮子之前,先查看插件库,研究研究



版权声明:本文为weixin_39894914原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。