Domanda

Qualcuno sa come si può ottenere la lunghezza di una polilinea in Google Maps v3? Al momento sto utilizzando Haversine fomula ma se la polilinea incontra l'inizio allora calcola la lunghezza più corta. Qualcuno sa come posso calcolare la lunghezza polilinea?

Grazie mille. Mark

È stato utile?

Soluzione

Estendere API di Google Maps con queste funzioni:

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

e quindi è possibile chiamare:

var length_in_km = yourPoly.inKm();

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

Altri suggerimenti

Usa Google Geometria:

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

Poi il suo facile come questo:

var meters = google.maps.geometry.spherical.computeLength(myPolyline.getPath());
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top