我有这个代码用于请求谷歌更正输入的地址,并需要它返回城市的英文名称:
function gmap_query_xml($in_address) {
$base_url = "http://maps.google.com/maps/geo?output=xml®ion=US&language=en&key=". KEY;
$request_url = $base_url . "&q=" . urlencode($in_address);
return simplexml_load_file($request_url);
}
Then,
$xml = gmap_query_xml($in_address);
最后获取城市名称:
if ($xml) {
$city = (string) $xml->Response->Placemark->AddressDetails->Country->AdministrativeArea->SubAdministrativeArea->Locality->LocalityName;
}
这将返回正确的城市名称, BUT!它以母语表示。尝试罗马 - 你会得到罗马,尝试基辅,你会得到基辅。
如何解决这个问题?感谢!!
这方面似乎有些混乱。看此 Google 地理编码 API 错误报告列表 http://www.devcomments.com/Bug-Report-default-language-behavior-difference-between-geocoder-at241613.htm.
您正在使用旧的 V2 API。
根据这个帖子 http://www.devcomments.com/Bug-Report-default-language-behavior-difference-between-geocoder-at229546.htm和我自己的测试,新的V3 API http://code.google.com/apis/maps/documentation/geocoding/:
http://maps.google.com/maps/api/geocode/xml?address=Rome&sensor=false&language=en
对更敏感language
参数并正确翻译地点名称。我得到正确的结果language=en
(罗马),language=de
(罗马)甚至language=fi
(房间)!
然而,V3 以不同的格式提供其地理编码结果,因此您必须相当大地更改您的解析(由于addressComponents
现在已经结构化了,这也让我很烦恼)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)