получить длину полилинии в Google Maps v3 - PullRequest
6 голосов
/ 19 декабря 2010

Кто-нибудь знает, как вы можете получить длину полилинии в Google Maps v3?В настоящее время я использую формулу Haversine, но если ломаная встречает начало, она вычисляет самую короткую длину.Кто-нибудь знает, как я могу рассчитать длину полилинии?

Большое спасибо.Mark

Ответы [ 2 ]

19 голосов
/ 09 марта 2011

Расширьте API Карт Google с помощью этих функций:

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

5 голосов
/ 30 января 2016

Используйте Google Geometry:

<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());
...