之前做高德地图的时候用到的,分享一下.比如在地图上画一个区域,然后点击这个所画的区域,在区域中心店弹出个提示什么的,就要通过经纬度坐标计算出中心点.
代码需要数学知识,有兴趣的同学自行搜索,代码如下:
var calculateCenter = function(lnglatarr){
var total = lnglatarr.length;
var X=0,Y=0,Z=0;
$.each(lnglatarr, function(index, lnglat) {
var lng = lnglat.lng * Math.PI / 180;
var lat = lnglat.lat * Math.PI / 180;
var x,y,z;
x = Math.cos(lat) * Math.cos(lng);
y = Math.cos(lat) * Math.sin(lng);
z = Math.sin(lat);
X += x;
Y += y;
Z += z;
});
X = X/total;
Y = Y/total;
Z = Z/total;
var Lng = Math.atan2(Y,X);
var Hyp = Math.sqrt(X*X + Y*Y);
var Lat = Math.atan2(Z,Hyp);
return new AMap.LngLat(Lng*180/Math.PI,Lat*180/Math.PI);
};
传入的参数是高德地图坐标数组,也就是经纬度 Array.