谷歌地图多边形距离(米)

时间:2014-09-22 09:29:01

标签: javascript google-maps polygon

如何使用google map api实现这一目标?

http://i59.tinypic.com/6dzb88.jpg

每边的米。

如果我右键点击谷歌地图距离,我可以这样做: http://i57.tinypic.com/21e7w1.jpg

基本上,我希望我绘制的多边形看起来像第一个或第二个图像。 (我需要标签)这可能吗?

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解你的问题...... 但是,可以使用http://en.wikipedia.org/wiki/Haversine_formula

计算球体上两个经度/纬度点之间的距离

Javascript实施

rad = function(x) {return x*Math.PI/180;}

distHaversine = function(p1, p2) {
  var R = 6371; // earth's mean radius in km
  var dLat  = rad(p2.lat() - p1.lat());
  var dLong = rad(p2.lng() - p1.lng());

  var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
          Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong/2) * Math.sin(dLong/2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  var d = R * c;

  return d.toFixed(3);
}

我认为谷歌地图api中也有一个实现

google.maps.geometry.spherical.computeDistanceBetween (latLngA, latLngB);

如果您在绘制多边形时遇到问题,请在此处查看google maps示例 https://developers.google.com/maps/documentation/javascript/examples/polygon-simple

您可能需要为标记执行一些自定义文本叠加。 也许使用https://code.google.com/p/google-maps-utility-library-v3/中的MapLabel类:

var mapLabel = new MapLabel({
           text: 'Test',
           position: new google.maps.LatLng(50,50),
           map: map,
           fontSize: 20,
           align: 'right'
         });

或者你可以简单地创建一些自定义多边形并绘制它们。可能对所有数字都有一点工作。