【问题标题】:Need Google Geocoding to return City name in English需要谷歌地理编码以英文返回城市名称
【发布时间】:2011-03-27 04:59:47
【问题描述】:

我有此代码用于请求 google 更正输入的地址,并需要它返回城市的英文名称:

function gmap_query_xml($in_address) {
  $base_url = "http://maps.google.com/maps/geo?output=xml&region=US&language=en&key=". KEY;
  $request_url = $base_url . "&q=" . urlencode($in_address);
  return simplexml_load_file($request_url);
}

那么,

$xml = gmap_query_xml($in_address);

最后得到城市名称:

if ($xml) {
  $city = (string) $xml->Response->Placemark->AddressDetails->Country->AdministrativeArea->SubAdministrativeArea->Locality->LocalityName;
}

这会返回正确的城市名称但是!它以母语表示。试试罗马——你会得到罗马,试试基辅,你会得到Киев。

如何解决这个问题?谢谢!!

【问题讨论】:

    标签: php geocoding


    【解决方案1】:

    在这方面似乎有点混乱。见this list of Google Geocoding API bug reports

    您使用的是旧版 V2 API。

    根据this post和我自己的测试,新的V3 API

    http://maps.google.com/maps/api/geocode/xml?address=Rome&sensor=false&language=en
    

    language 参数更敏感,并且可以正确转换位置名称。我得到了language=en(罗马)、language=de(罗马)甚至language=fi(罗马)的正确结果!

    但是,V3 以不同的格式提供其地理编码结果,因此您必须大幅更改解析(由于 addressComponents 现在的结构方式,这也让我很恼火)。

    【讨论】:

      猜你喜欢
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2018-01-16
      • 1970-01-01
      • 2020-05-14
      相关资源
      最近更新 更多