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

时间:2012-01-20 13:26:40

标签: javascript google-maps geocoding

我目前正在使用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

帮助表示赞赏。

2 个答案:

答案 0 :(得分:4)

请问,为什么要检查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地理编码工具的(源代码)

答案 1 :(得分:1)

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);
...