ottenere la lunghezza di polyline in Google Maps v3
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
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