Reverse Geocoding von API 2 zu 3 umstellen

aikonch

Grünschnabel
Ich bin leider kein PHP Programmierer, habe aber hierbei ein grosses Problem. Seit dem 8. März hat Google die API umgestellt auf Version 3, das Script hier benutzt aber noch die API 2! Somit weiss ich nicht genau was bei der API 2 noch geliefert wurde... ich habe folgende Funktion:

function getAddress($lat,$lon)
{
$url = 'http://maps.google.com/maps/geo?output=csv&ll='.$lat.','.$lon;
$request = fopen($url,'r');
$content = fread($request,200);
fclose($request);
usleep(200000);
$adr="";
$i=0;
$l=strlen($content);
while((substr($content,$i,1)!="\"")&&($i<$l))$i++;
$i++;
while((substr($content,$i,1)!="\"")&&($i<$l))
{
$adr=$adr.substr($content,$i,1);
$i++;
}
return $adr;
}

Ich kann die Webadresse anpassen wie folgt: http://maps.googleapis.com/maps/api/geocode/json?sensor=false&latlng=46.654,8.987 dann liefert Google wieder ein JSON, doch ist das wohl nicht mehr identisch zu vorher und somit ist in der Variable $adr nichts mehr enthalten...

Weiss jemand was das obige Script für einen Input bekam oder wie ich das umschreiben müsste damit es wieder funktioniert? Klickt man den neuen Link an sieht man die aktuelle Ausgabe!
 
Die Funktion hat das Ergebnis im CSV-Format abgerufen, welches in der V3 nicht mehr ausgeliefert wird. Folglich musst du die Funktion umstellen.

Beispiel für JSON:
Code:
<?php
function getAddress($lat,$lon)
{
  $url     = 'http://maps.googleapis.com/maps/api/geocode/json?'.
             'sensor=false&latlng='.$lat.','.$lon;
  $content = json_decode(file_get_contents($url),true);
  
  if(count($content['results'])){
     return $content['results'][0]['formatted_address'];
  }
  return null;
}

echo getAddress(46.654,8.987);
//Runs, 7173 Sumvitg, Switzerland
?>

XML-Beispiel spare ich mir, die JSON-Variante dürfte die Schnellere sein.
 
Zuletzt bearbeitet:
also klingt nach wesentlich mehr als ein klein wenig umstellen...;( in $adr stand anschliessend "Bahnhofstrasse 7, 8000 Zürich" oder sowas, das kann ich also nicht einfach so ersetzen?

Ich verstehe leider einfach viel zu wenig von PHP und von JSON sowieso...
 
Ist mir eigentlich egal was da früher in $adr stand, die Koordinaten(46.654,8.987) haben mit der Bahnhofsstraße in Zürich soviel zu tun wie mit dem Matterhorn, rein garnichts.

Wenn du die Funktion mit Koordinaten für die Bahnhofsstraße in Zürich fütterst(z.B. 47.3680986, 8.5399108 ) bekommst du auch ein entsprechendes Resultat
 
Zuletzt bearbeitet:
Ich meinte das nicht so (die Koordinaten waren einfach "zufällig"), sondern das am schluss return $adr; stand was den Ort zurück liefert. Kurz gesagt ich weiss nicht wie ich bei Deiner Funktion (sowieso schon tausend Dank!) diese Adresse in return $adr; bekomme...******
 
Meine Funktion spart sich die Nutzung der Variablen $adr, gibt aber dasselbe zurück wie deine Funktion, die Adresse(falls verfügbar).
 
Ok, das ist mir soweit klar. Problem ist nur diese Funktion wird von vielen anderen Scripts aufgerufen mit lat & lon und erwartet scheinbar adr zurück...zumindest so wie ich das interpretiere. Somit wäre die Frage wie kriege ich

echo getAddress(46.654,8.987);

in

return $adr;

Ich weiss sicherlich PHP erstes Semester, aber ich benötige das normalerweise nicht...nur jetzt wo es plötzlich nicht mehr läuft...
 
Sorry, dann lese mal 5 min in einem PHP-Buch oder engagiere jemanden, der wenigstens ein wenig Basiswissen hat.
 
Das habe ich bereits gemacht....aber eben da fehlt das Verständnis. Falls Du denkst ich schreibe einfach alles und erwarte immer eine fertige Lösung...in diesem Fall wäre das cool, betreue selbst seit sehr vielen Jahren ein Forum, ok nicht mehr aikon.ch aber jetzt halt apfelkraft.ch....vielleicht hast Du da auch eines Tages eine Frage und bist froh wenn alles eine Antwort findet....;)
 

Neue Beiträge

Zurück