上一篇没来得及说,之所以把百度地图换成腾讯地图,是因为在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;//判断距离是否大于20000mif(parseInt(distanceA) <= 20000 && parseInt(distanceB) > 20000){bababbabababablllalallalala});}else if(parseInt(distanceB) <= 20000 && parseInt(distanceA) > 20000){balbalbalabalbalbalbalbalabalabalabalabalba});}else{aaaaaaaaaaaaaaaaaaa}});}