如何从谷歌地图地理编码返回地址类型?

Posted

技术标签:

【中文标题】如何从谷歌地图地理编码返回地址类型?【英文标题】:How to return address types from google maps geocode? 【发布时间】:2012-01-20 13:26:40 【问题描述】:

我目前正在使用 google maps api 对地图上的位置进行地理编码并返回街道地址。

我目前用以下代码返回地址:

        function codeLatLng(markerPos) 
            geocoder.geocode('latLng': markerPos, function(results, status) 
              if (status == google.maps.GeocoderStatus.OK) 
                if (results[1]) 
                //Set markerAddress variable
                var markerAddress = results[0].formatted_address;
alert(markerAddress);
...

但是,如果我不想返回格式化的地址而是使用地址组件类型的更详细的版本,我该如何返回某些地址值,例如:http://code.google.com/apis/maps/documentation/geocoding/#Types

帮助表示赞赏。

【问题讨论】:

【参考方案1】:

请问,您为什么要检查results[1],然后使用results[0](或者我应该忽略它只是一个错字)?

只要statusOK,就会有至少一个结果。 否则,status 将是 ZERO_RESULTS

无论如何,你可以使用这样的东西:

function codeLatLng(markerPos) 
  geocoder.geocode('latLng': markerPos, function(results, status) 
    if (status == google.maps.GeocoderStatus.OK) 
      var markerAddress = results[0].address_components[0].long_name
          + ' (type: ' + results[0].address_components[0].types[0] + ')';
      alert(markerAddress);

整个address_components 数组可以玩很多,玩得开心! :)

若想获得更多乐趣,请查看http://gmaps-samples-v3.googlecode.com/svn/trunk/geocoder/v3-geocoder-tool.html 上的 Google Maps API v3 Geocoder Tool(源代码)

【讨论】:

【参考方案2】:

long_name 是地理编码器返回的地址组件的全文描述或名称。

 function codeLatLng(markerPos) 
                geocoder.geocode('latLng': markerPos, function(results, status) 
                  if (status == google.maps.GeocoderStatus.OK) 
                    if (results[1]) 
                    //Set markerAddress variable
                    var markerAddress = results[0].long_name;
    alert(markerAddress);
...

【讨论】:

hmm... 提醒任何其他想法为“未定义”

以上是关于如何从谷歌地图地理编码返回地址类型?的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图反向地理编码不返回正确/准确的地址

如何在信息窗口中显示我的地理编码地址?谷歌地图 API

谷歌地理编码 API 不如使用地址的谷歌地图准确

谷歌地图地理编码器返回相同的结果

如何提高 Google 地理编码器响应的精度?

如何从谷歌地图自动完成 api 获取邮政编码