358 Stimmen

Entfernung zwischen zwei Punkten in Google Maps V3 berechnen

Wie berechnet man die Entfernung zwischen zwei Markierungen in Google Maps V3 (ähnlich wie bei der distanceFrom Funktion inV2.)

Danke.

1 Stimmen

0voto

Erstens: Beziehen Sie sich auf die Entfernung, d. h. die Länge des gesamten Weges, oder möchten Sie nur die Verschiebung (geradlinige Entfernung) wissen? Wie ich sehe, weist hier niemand auf den Unterschied zwischen Entfernung und Verschiebung hin. Für die Entfernung berechnen Sie jeden Routenpunkt, der durch JSON/XML-Daten gegeben ist, für die Verschiebung gibt es eine integrierte Lösung mit Spherical Klasse

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

0voto

Arpit Jain Punkte 673

In PHP, mit Google Map Distance Matrix API:

//Get the Driving(Mode) distance between two Geo-location points(Latitude, Longitude) pair.
function get_distance($lat1, $lat2, $long1, $long2)
{
    $url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=".$lat1.",".$long1."&destinations=".$lat2.",".$long2."&mode=driving"."&units=imperial";
    //You can request distance data for different travel modes, request distance data in different units such as kilometers or miles, and estimate travel time in traffic.
    try{
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $response = curl_exec($ch);
        curl_close($ch);
        $response_a = json_decode($response, true);
        //Invalid request OR Empty response
        if(isset($response_a['error_message']) || empty($response_a['rows'])) 
            throw new Exception($response_a['error_message']);

    } catch(Exception $e){
        //Handle error here.
        return [];
    }

    //The unit parameter in the request URL only affects the text displayed within distance fields. The distance fields in response also contain values that are always expressed in meters.
    $dist = $response_a['rows'][0]['elements'][0]['distance']['text'];
    $time = $response_a['rows'][0]['elements'][0]['duration']['text'];

    return ['distance' => $dist, 'time' => $time];
}

Referenz: Distance Matrix API-Anfrage und -Antwort

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X