记录一下自己解决在vue移动端上定位的问题
先说下需求:进入首页后获取到用户地址,并根据地址检索附近POI
首先我是直接使用百度地图api的getCurrentPosition方法获取经纬度
先引入百度地图api,过程官网上都有
geolocation.getCurrentPosition(function (r) {
let lng = r.longitude
let lat = r.latitude
let pointBak = new BMap.Point(Number(lng), Number(lat));
getUserLocation(pointBak) //获取到经纬度后进行相应操作的方法
console.log('lng>>lng=',lng)
console.log('lat>>lat=',lat)
})
说真的这种方法是真的方便,不过在ios与安卓的微信浏览器上相差有点大,安卓微信浏览器上也不是说不能获取到,直接偏差了数个城市,
然后我以为是兼容问题,研究好久也没找到是为什么,所以后面我就直接在外层加上了一层使用h5获取经纬度的方法,获取失败走百度的
贴代码:
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function(success){
// alert('h5获取成功')
console.log('successsuccesssuccesssuccesssuccess>>>>',success)
console.log('successsuccesssuccesssuccesssuccess>>>>',success)
// 获取成功取出经纬度(gps,需要转换
lng = success.coords.longitude;
lat = success.coords.latitude;
pointArr.push({lng:lng,lat:lat});
// gps转换百度坐标方法
convertor.translate(pointArr, 1, 5, function (item) {
console.log('item>>>=',item)
// 转换后的经纬度坐标
lng = item.points[0].lng
lat = item.points[0].lat
})
},function (error) {
// alert('h5获取失败')
geolocation.getCurrentPosition(function (r) {
lng = r.longitude
lat = r.latitude
console.