根据地图经纬度坐标区域,计算区域中心点(以高德地图 API 为例)

原创
2014/09/17 10:10
阅读数 1W

    之前做高德地图的时候用到的,分享一下.比如在地图上画一个区域,然后点击这个所画的区域,在区域中心店弹出个提示什么的,就要通过经纬度坐标计算出中心点.

    代码需要数学知识,有兴趣的同学自行搜索,代码如下:

    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.

展开阅读全文
打赏
0
1 收藏
分享
加载中
顽Shi博主

引用来自“BtlbugYuan”的评论

请问楼主可以告诉我用到哪些数学知识吗?
你可以参考http://www.360doc.com/content/13/0410/17/11500595_277406769.shtml
2014/12/17 15:19
回复
举报
顽Shi博主

引用来自“BtlbugYuan”的评论

如果是凹边形的区域,计算得到的中心点也会在凹边形区域内吗?
不一定的,可能会超出,因为算法不够精确
2014/12/17 15:18
回复
举报
如果是凹边形的区域,计算得到的中心点也会在凹边形区域内吗?
2014/12/17 14:13
回复
举报
请问楼主可以告诉我用到哪些数学知识吗?
2014/12/17 14:11
回复
举报
更多评论
打赏
4 评论
1 收藏
0
分享
返回顶部
顶部