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.
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.
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:
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:
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