it-swarm.com.de

Google Maps - Wie erhalte ich die Entfernung zwischen zwei Punkten in Metern?

Ich habe diese Koordinate:

(45.463688, 9.18814) 
(46.0438317, 9.75936230000002)

und ich brauche (wahrscheinlich Google API V3), um den Abstand zwischen diesen 2 Punkten in Metern zu ermitteln. Wie kann ich es tun? 

39
markzzz

Wenn Sie die v3-Google-Maps-API verwenden möchten, können Sie folgende Funktion verwenden: Hinweis: Sie müssen &libraries=geometry zu Ihrer Skriptquelle hinzufügen

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script>

<script>
var p1 = new google.maps.LatLng(45.463688, 9.18814);
var p2 = new google.maps.LatLng(46.0438317, 9.75936230000002);

alert(calcDistance(p1, p2));

//calculates distance between two points in km's
function calcDistance(p1, p2) {
  return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 1000).toFixed(2);
}

</script>
111
Roman Goyenko

Ich denke, Sie könnten auf eine bestimmte API verzichten und die Entfernung mit einfachem Javascript berechnen:

Diese Site bietet gute Informationen zu geographischen Berechnungen und Javascript-Beispiel für die Entfernungsberechnung.

Ok, ein kurzer Blick auf die Google API-Seite und es scheint, Sie könnten es tun mit:

  1. Rufen Sie DirectionsService (). Route () auf, um DirectionsResult mit Routen zu erhalten
  2. Gehen Sie für eine oder jede Route durch ihre Eigenschaft "Beine" und berechnen Sie die Summe der Entfernungen
4
PiRX

Dies geschieht in erster Linie mit Mathematik außerhalb der Google-API, sodass Sie die API nur für die Suche nach den richtigen Koordinaten verwenden müssen.

Zu wissen, dass hier ein Link zu einer zuvor beantworteten Frage zu Javascript steht.

Distanz zwischen 2 GPS-Koordinaten berechnen

1
Dustin Sparks

Versuche dies

 CLLocationCoordinate2D coord1;
 coord1.latitude = 45.463688;
 coord1.longitude = 9.18814;
 CLLocation *loc1  = [[[CLLocation alloc] initWithLatitude:coord1.latitude longitude:coord1.longitude] autorelease];

 CLLocationCoordinate2D coord2;
 coord2.latitude = 46.0438317;
 coord2.longitude = 9.75936230000002;
 CLLocation *loc2  = [[[CLLocation alloc] initWithLatitude:46.0438317 longitude:9.75936230000002] autorelease];

 CLLocationDistance d1 = [loc1 distanceFromLocation:loc2];
1
Tommaso

http://www.csgnetwork.com/gpsdistcalc.html

Hat übrigens nichts mit der Codierung zu tun

EDIT Wenn Sie nach Code suchen

Berechne die Entfernung zwischen zwei Punkten in Google Maps V3

1
Rob

Versuche dies:

const const toRadians = (val) => {
    return val * Math.PI / 180;
}
const toDegrees = (val) => {
    return val * 180 / Math.PI;
}
// Calculate a point winthin a circle
// circle ={center:LatLong, radius: number} // in metres
const pointInsideCircle = (point, circle) => {
    let center = circle.center;
    let distance = distanceBetween(point, center);

    //alert(distance);
    return distance < circle.radius;
};

const distanceBetween = (point1, point2) => {
   //debugger;
   var R = 6371e3; // metres
   var φ1 = toRadians(point1.latitude);
   var φ2 = toRadians(point2.latitude);
   var Δφ = toRadians(point2.latitude - point1.latitude);
   var Δλ = toRadians(point2.longitude - point1.longitude);

   var a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
           Math.cos(φ1) * Math.cos(φ2) *
           Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
   var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

   return R * c;
}

Referenzen: http://www.movable-type.co.uk/scripts/latlong.html

0