【问题标题】:get length of polyline in google maps v3在谷歌地图v3中获取折线的长度
【发布时间】:2011-05-27 16:23:22
【问题描述】:

有谁知道如何在谷歌地图 v3 中获得折线的长度?目前我正在使用Haversine公式,但如果折线符合起点,那么它会计算最短长度。有谁知道我如何计算折线长度?

非常感谢。 标记

【问题讨论】:

    标签: maps polyline


    【解决方案1】:

    使用以下功能扩展 Google Maps API:

    google.maps.LatLng.prototype.kmTo = function(a){ 
        var e = Math, ra = e.PI/180; 
        var b = this.lat() * ra, c = a.lat() * ra, d = b - c; 
        var g = this.lng() * ra - a.lng() * ra; 
        var f = 2 * e.asin(e.sqrt(e.pow(e.sin(d/2), 2) + e.cos(b) * e.cos 
        (c) * e.pow(e.sin(g/2), 2))); 
        return f * 6378.137; 
    }
    
    google.maps.Polyline.prototype.inKm = function(n){ 
        var a = this.getPath(n), len = a.getLength(), dist = 0; 
        for (var i=0; i < len-1; i++) { 
           dist += a.getAt(i).kmTo(a.getAt(i+1)); 
        }
        return dist; 
    }
    

    然后你可以调用:

    var length_in_km = yourPoly.inKm();
    

    来源:http://groups.google.com/forum/#!topic/google-maps-js-api-v3/Op87g7lBotc

    【讨论】:

      【解决方案2】:

      使用谷歌几何:

      <script type="text/javascript" src="//maps.google.com/maps/api/js?v=3.exp&libraries=geometry"></script>
      

      那么就这么简单:

      var meters = google.maps.geometry.spherical.computeLength(myPolyline.getPath());
      

      【讨论】:

        猜你喜欢
        • 2019-02-16
        • 1970-01-01
        • 2013-07-02
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多