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