代码之家  ›  专栏  ›  技术社区  ›  valk

需要谷歌地理编码返回英文城市名称

  •  2
  • valk  · 技术社区  · 14 年前

    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;
    }
    

    这将返回 正确的城市名称 但是! 它是用母语表达的。试试罗马-你得到罗马,试试基辅,你就会得到。

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

    1 回复  |  直到 14 年前
        1
  •  6
  •   Pekka    14 年前

    这方面似乎有点混乱。看到了吗 this list of Google Geocoding API bug reports

    您正在使用旧的v2api。

    根据 this post 还有我自己的测试,新的 V3 API :

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

    对环境更敏感 language 参数并正确地翻译位置名称。我得到了正确的结果 language=en (罗马), language=de (Rom)甚至 language=fi (房间A)!

    但是,V3以不同的格式提供其地理编码结果,因此您必须大大更改解析(由于 addressComponents