Verwendung von PHP und Google Maps Api zur Ermittlung der Entfernung zwischen 2 Postleitzahlen (UK)

Lesezeit: 4 Minuten

Hey, ich frage mich, wie man mit PHP und Google Maps Api die Entfernung zwischen 2 Postleitzahlen ermittelt.

Jeder hat eine Idee oder Links zu Beispielen.

Verwendung von PHP und Google Maps Api zur Ermittlung der
Daniel Wassallo

Angenommen, Sie suchen die geografische Entfernungmüssen Sie zuerst den Breiten- und Längengrad Ihrer beiden Postleitzahlen mit dem erhalten Serverseitige Geokodierungsdienste von Google Maps wie im folgenden Beispiel:

$url="http://maps.google.com/maps/geo?q=EC3M,+UK&output=csv&sensor=false";

$data = @file_get_contents($url);

$result = explode(",", $data);

echo $result[0]; // status code
echo $result[1]; // accuracy
echo $result[2]; // latitude
echo $result[3]; // longitude

Dann können Sie die Entfernung zwischen den Koordinaten Ihrer beiden Postleitzahlen berechnen, indem Sie a verwenden Großkreisentfernung Implementierung wie die folgende:

Beachten Sie, dass der serverseitige Geokodierungsdienst nur in Verbindung mit der Anzeige von Ergebnissen auf einer Google-Karte verwendet werden darf; Das Geokodieren von Ergebnissen ohne deren Anzeige auf einer Karte ist durch die verboten Lizenzbeschränkungen für die Nutzungsbedingungen der Google Maps-API.


AKTUALISIEREN:

Wenn Sie nach der Fahrstrecke anstelle der geografischen Entfernung suchen, beachten Sie, dass es derzeit keine dokumentierte und zugelassene Methode gibt, um über eine serverseitige HTTP-Anfrage auf die Google Maps Directions API zuzugreifen.

Dennoch ist eine undokumentierte Methode, die eine JSON-Ausgabe zurückgibt, die folgende:

http://maps.google.com/maps/nav?q=from:London%20to:Dover

Dadurch erhalten Sie die Wegbeschreibung zusammen mit der Gesamtfahrstrecke im JSON-Format: "meters":122977.

Das Format der q Parameter sein sollte from:xxx%20to:yyy. Ersetzen Sie xxx und yyy durch Start bzw. Ziel. Sie können Breiten- und Längenkoordinaten anstelle von vollständigen Adressen verwenden:

http://maps.google.com/maps/nav?q=from:51.519894,-0.105667%20to:51.129079,1.306925

Beachten Sie, dass dies nicht nur undokumentiert ist, sondern möglicherweise auch gegen die Einschränkungen 10.1 und 10.5 der Allgemeine Geschäftsbedingungen für die Google Maps-API.

Vielleicht interessieren Sie sich auch für die folgenden verwandten Artikel:

  • Dies ist eine großartige Erklärung, wie es geht. Beachten Sie jedoch, dass die Google-Geolokalisierung für britische Postleitzahlen nicht so genau ist, da Sie speziell nach Großbritannien fragen. Es könnte jedoch für Ihre Zwecke in Ordnung sein, hängt davon ab, was Sie brauchen.

    – MarkJ

    20. Februar 2010 um 11:37 Uhr

  • @Mark: Danke, dass du diese Informationen über die Genauigkeit der britischen Postleitzahlen geteilt hast.

    – Daniel Vasallo

    20. Februar 2010 um 12:24 Uhr


Ich weiß nicht, ob die V3-API etwas ändert, aber ich benutze das schon eine ganze Weile und es funktioniert immer noch:

Von und bis werden jeweils als Breitengrad, Längengrad ausgedrückt (eine Adresse würde wahrscheinlich funktionieren; ich bin sicher, ich habe es versucht, aber ich erinnere mich nicht und ich hatte sowieso die Koordinaten)

$base_url="http://maps.googleapis.com/maps/api/directions/xml?sensor=false";
$xml = simplexml_load_file("$base_url&origin=$from&destination=$to");
$distance = (string)$xml->route->leg->distance->text;
$duration = (string)$xml->route->leg->duration->text

Aufbauend auf Daniels Antwort können Sie die von Google verwenden Geocodierungs-API Auto, öffentliche Verkehrsmittel, Fuß- und Radwege leicht zu erreichen :

$postcode1='W1J0DB';
$postcode2='W23UW';
$result = array();

$url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$postcode1&destinations=$postcode2&mode=bicycling&language=en-EN&sensor=false";

$data = @file_get_contents($url);

$result = json_decode($data, true);
print_r($result);

Unbedingt ersetzen &mode=Radfahren mit Ihrem bevorzugten Parameter:

  • &mode=fahren
  • &mode=Radfahren
  • &mode=transit
  • &mode=gehen

Sehen Sie sich hier die Mailingliste an:

http://groups.google.com/group/Google-Maps-API/browse_thread/thread/71e6aa2c3de66127

Sobald Sie sich entschieden haben, ob Sie eine gerade Linie oder eine Fahrstrecke wünschen, können Sie diese ganz einfach berechnen. Sie müssen PHP nicht verwenden, aber es gibt Beispiele.

Schau dir das auch an:

http://groups.google.com/group/google-maps-api/browse_thread/thread/d43de63d05adc62d/1a04053f39a3edf3?lnk=gst&q=calculate+distance#1a04053f39a3edf3

Die Google Maps-API ist in JavaScript, nicht in PHP. Um das zu erreichen, was Sie wollen, wandeln Sie die 2 Postleitzahlen in LatLang-Koordinaten um und verwenden Sie die Funktion distanceFrom um den Abstand zwischen ihnen zu finden.

Schauen Sie sich an Dieser Beitrag für einen Beispielcode.

  • Kann ich trotzdem JSON-Daten zurückgeben? Ich werde AJAX-Anrufe durchführen, um die Fahrstrecke zwischen 2 Orten zu ermitteln.

    – doof

    19. Februar 2010 um 12:27 Uhr

  • Du solltest dazu fähig sein. Daten, die von der Google-API kommen, liegen bereits im JSON-Format vor. Senden Sie es einfach an PHP zurück oder analysieren Sie es clientseitig mit Javascript.

    – Reisender Techniker

    20. Februar 2010 um 9:45 Uhr

  • Kann ich trotzdem JSON-Daten zurückgeben? Ich werde AJAX-Anrufe durchführen, um die Fahrstrecke zwischen 2 Orten zu ermitteln.

    – doof

    19. Februar 2010 um 12:27 Uhr

  • Du solltest dazu fähig sein. Daten, die von der Google-API kommen, liegen bereits im JSON-Format vor. Senden Sie es einfach an PHP zurück oder analysieren Sie es clientseitig mit Javascript.

    – Reisender Techniker

    20. Februar 2010 um 9:45 Uhr

867780cookie-checkVerwendung von PHP und Google Maps Api zur Ermittlung der Entfernung zwischen 2 Postleitzahlen (UK)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy