高德地图计算直线距离(高德地图计算两点的坐标距离)

前言:需要根据用户的地理位置,计算出边的店家和商家。这时候使用到了高德地图,然后利用坐标进行区域内的计算。

规则

初始的计算,用的是两点的方式,左上和右下来确定距离,后来发现在执行的了一段时间后,有一些区域不是太好,偏差比较大,所以就修改成了,以中心点计算距离的方式来确定所归某个区域。

地图

高德地图API【JS】版本

代码

//区域中心点 以json的形式来写的 大家可以换成自己想用的格式 var xyCenter = [ {sign:1001,lng:116.469637,lat:39.894197},{sign:1002,lng:116.383066,lat:39.962353},{sign:1003,lng:116.341653,lat:39.8707} ]; //存放每个地点所计算出来的距离 var resArray = new Array(); //填写计算距离的结果 地点与距离 var belongArea = function(lnglat){ for(i=0;i<xyCenter.length;i ){ resArray[i]=new Array(); resArray[i][sign]=xyCenter[i].sign; var endLngLat = new AMap.LngLat(xyCenter[i].lng,xyCenter[i].lat); resArray[i][range]=parseInt(Math.abs(endLngLat.distance(lnglat))); //console.log(resArray[i][range]); } }; //取最终的归属代号 大家可以修改成自己的,本程序所用1001 1002... var maxRes = function(){ var tmp=resArray[0]; for(i=0;i<resArray.length-1;i ){ if(resArray[i][range]<resArray[i 1][range]){ tmp = i; resArray[i 1] = resArray[i]; }else{ tmp = i 1; } } return resArray[tmp][sign]; }; //调用方式 //获取LngLat var startLngLat = new AMap.LngLat(116.319766,39.911448); //传入到计算方法 belongArea(startLngLat); //获取到最终结果 alert(maxRes());

结论

参考高德地图API的基础类里的LngLat类

核心就是我们利用中心点计算出用户的4个点的方位。然后通过规则算出区域,即可快速判断周边自己想给用户展示的数据

高德地图计算直线距离(高德地图计算两点的坐标距离)(1)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页