上一篇没来得及说,之所以把百度地图换成腾讯地图,是因为在IOS中,小程序不能正确显示,具体出错如下图(我真是费老大劲找出来的),网上百度了好多,也有出现类似情况的,心痛,在小程序官方也没找到解决方案,若有人知道,望周知,定感激不尽。
换成腾讯地图后,出现定位偏差,而且而且,偏差很大,老板在濮阳,竟然显示的是上海,好吧,他过年的时候在上海。没办法,还是换成了H5定位。
具体的H5定位,已经在H5定位+腾讯地图逆地址解析 = 定位到区县这篇中写到了,有指教请移步该篇。
本篇说的是利用腾讯地图计算两点间的距离,是获取用户当前位置并计算一个固定位置。
在这个链接里,可以查看腾讯地图JavaScript API方法 :https://lbs.qq.com/javascript_v2/demo.html
具体实现逻辑:
//获取当前用户经纬度
//设定已有经纬度
//判断距离
代码如下(接H5定位+腾讯地图逆地址解析 = 定位到区县这个JS写):
function showPosition(position){
lat=position.coords.latitude;
lng=position.coords.longitude;
//调用地图命名空间中的转换接口 type的可选值为 1:GPS经纬度,2:搜狗经纬度,3:百度经纬度,4:mapbar经纬度,5:google经纬度,6:搜狗墨卡托
qq.maps.convertor.translate(new qq.maps.LatLng(lat,lng), 1, function(res){
//取出经纬度并且赋值
center = res[0];
map = new qq.maps.Map(document.getElementById("container"),{
center: center,
zoom: 12
});
//逆地址解析
geocoder = new qq.maps.Geocoder({
complete : function(result){
let district = result.detail.addressComponents.district; //定位到区县
document.getElementById(dwTxt).value(district);
}
});
geocoder.getAddress(center);
//计算两点间的距离
var start = new qq.maps.LatLng(lat, lng);
var endA = new qq.maps.LatLng(38, 115);
var endB = new qq.maps.LatLng(34, 118);
var distanceA = Math.round(qq.maps.geometry.spherical.computeDistanceBetween(start, endA)*10)/10;
var distanceB = Math.round(qq.maps.geometry.spherical.computeDistanceBetween(start, endB)*10)/10;
//判断距离是否大于20000m
if(parseInt(distanceA) <= 20000 && parseInt(distanceB) > 20000){
bababbabababablllalallalala
});
}else if(parseInt(distanceB) <= 20000 && parseInt(distanceA) > 20000){
balbalbalabalbalbalbalbalabalabalabalabalba
});
}else{
aaaaaaaaaaaaaaaaaaa
}
});
}