【问题标题】:Google Map Polygon Distance in Meters谷歌地图多边形距离以米为单位
【发布时间】:2014-09-22 09:29:01
【问题描述】:

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

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

每边的米。

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

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

【问题讨论】:

    标签: javascript google-maps polygon


    【解决方案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);
    

    如果您在绘制多边形时遇到问题,请查看此处的谷歌地图示例 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'
             });
    

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

    【讨论】:

    • 我已经用多边形绘制了googlemap,我想要每个多边形侧面的标签。这更好地描述了这个问题groups.google.com/forum/#!topic/google-maps-js-api-v3/… 即使使用 ELabels for V3,该代码也不起作用。我也希望旋转标签,因为它显示在我的图像中。或者最好在我的第二张图片中有类似的东西。
    猜你喜欢
    • 2011-12-21
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多