0
這是我對我如何讓不同組件當前的代碼。谷歌反向地理編碼 - 獲取郵政編碼
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()只是將谷歌地圖API的地址解析頁面上使用的file_get_contents,然後將結果進行解碼,然後返回它們。
我沒有太大的東西,看起來像一個風扇。看起來它可能非常不一致。有沒有其他更好的解決方案來獲取來自谷歌或任何其他服務的所有數據?
我寧願另一種服務,不限制要求(或者是非法使用多種地理編碼服務,如兵/雅虎/等)? (對不起,扔在另一個問題)
反正太大的幫助將是非常讚賞!
謝謝,但我可以很容易從地址使用V3獲取經緯度。唯一的東西是一切,但緯度/經度...(又名區域的類型...等) – Jordan 2011-01-14 05:34:13