高德地图计算两点的坐标距离

  • 这几天一直在坐跟地图相关的一些小功能。主要是区域的确定,及所归某个版块等。
  • 初始的计算,用的是两点的方式,左上和右下来确定距离,后来发现在执行的了一段时间后,有一些区域不是太好,偏差比较大,所以就修改成了,以中心点计算距离的方式来确定所归某个区域。
  • 本次使用地图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类
参考地址:http://lbs.amap.com/api/javascript-api/reference/core/

郝先生

继续阅读此作者的更多文章