Hier ist mein aktueller Code, wie ich verschiedene Komponenten bekomme.Google Reverse-Geocode - Holen Sie sich die Postleitzahl
function getGeocodeFull($address)
{
if (empty($address)) return false;
$_geocode = false;
if (($_geocode = $this->getCache($address)) === false) // check if address is has a cache
{
if (($results = $this->geoGetCoordsFull($address)) !== false)
{
// sloooooooooopppy.. yes these can all be combined, i know.
if (!isset($results->results[0]->geometry->location->lat)) return false;
if (!isset($results->results[0]->geometry->location->lat)) return false;
if (!isset($results->results[0]->formatted_address)) return false;
if (!isset($results->results[0]->address_components)) return false;
$_geocode['lat'] = $results->results[0]->geometry->location->lat;
$_geocode['lon'] = $results->results[0]->geometry->location->lng;
$_geocode['address'] = $results->results[0]->formatted_address;
foreach ($results->results[0]->address_components as $component)
{
if (isset($component->types))
{
foreach ($component->types as $type)
{
switch ($type)
{
case 'route':
$_geocode['street'] = $component->long_name;
break;
case 'locality':
$_geocode['city'] = $component->long_name;
break;
case 'administrative_area_level_2':
$_geocode['county'] = $component->long_name;
break;
case 'administrative_area_level_3':
$_geocode['area'] = $component->long_name;
break;
case 'postal_code':
$_geocode['zip'] = $component->short_name;
break;
}
}
}
}
$this->putCacheFull($address, $_geocode['lat'], $_geocode['lon'], $_geocode['address'], $_geocode['street'], $_geocode['city'], $_geocode['county'], $_geocode['area'], $_geocode['zip']);
}
}
return $_geocode;
}
geoGetCoordsFull() verwendet einfach file_get_contents auf der Google-Karte api geocode Seite, decodiert dann die Ergebnisse dann gibt sie.
Ich bin nicht ein großer Fan von dem, wie das aussieht. Es scheint, dass es sehr inkonsequent sein kann. Gibt es noch andere bessere Lösungen, um alle Daten von Google oder einem anderen Dienst zu erhalten?
Ich würde einen anderen Dienst bevorzugen, der Anfragen nicht beschränkt (oder ist es illegal, mehrere Geocode-Dienste wie Bing/Yahoo/etc) zu verwenden ?? (Entschuldigung für das Einwerfen einer anderen Frage)
Wie auch immer, viel Hilfe würde sehr geschätzt werden!
Danke, aber ich kann leicht lat/lon von Adressen mit V3 bekommen. Die einzige Sache ist alles andere als lat/lon ... (aka die Arten von Bereichen ... etc) – Jordan
Ich weiß, das ist ein bisschen alt, aber um etwas Zeit/Mühe für diejenigen, die dies finden, zu speichern, seien Sie sich bewusst von Google aktuelle Nutzungsbedingungen (Hinweis: Die Geocodierungs-API darf nur in Verbindung mit einer Google-Karte verwendet werden; Geokodierungsergebnisse sind nicht zulässig, wenn sie nicht auf einer Karte angezeigt werden.) https://developers.google.com/maps/documentation/geocoding/ – puddleglum