2010-12-18 9 views
4

Weiß jemand, wie Sie die Länge einer Polylinie in Google Maps v3 bekommen können? Im Moment verwende ich Haversine Formel, aber wenn die Polylinie den Anfang trifft, berechnet sie die kürzeste Länge. Weiß jemand, wie ich die Polylinienlänge berechnen kann?Get Länge der Polylinie in Google Maps v3

Vielen Dank. Mark

Antwort

16

erweitern Google Maps API mit diesen Funktionen:

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; 
} 

und dann kann man nennen:

var length_in_km = yourPoly.inKm(); 

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

+2

genial. Die Antwort wird angenommen. Vielen Dank –

4

Verwenden Sie Google Geometrie:

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

Dann ist es so einfach wie diese:

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