从反向地理编码中获取完整格式化的地址

时间:2014-10-15 16:40:42

标签: javascript google-maps-api-3 reverse-geocoding

我想通过Google Maps API v3反向地理编码检索完整格式的地址,因为它只显示许多(可能是所有)国家/地区的邮政编码和/或城市和国家/地区。我还要检索街道名称以及您可以通过Reverse Geocoding (Address Lookup)功能获得的其他内容。但由于我无法从XML文件中获取数据或使用JavaScript链接到XML文件的地址,因此我必须使用Reverse Geocoding函数。

反向地理编码(地址查询)显示791 Long Ridge Lane, Gainesboro, Tennessee 38562, USA,反向地理编码显示Gainesboro, Tennessee 38562, USA

是否可以通过反向地理编码获取完整格式化地址,或者是否必须通过反向地理编码(地址查找)使用PHP XML文件?

function coordinates_to_address(lat, lng) {
    var latlng = new google.maps.LatLng(lat, lng);

    geocoder.geocode({'latLng': latlng}, function(results, status) {
        if(status == google.maps.GeocoderStatus.OK) {
            if(results[1]) {
                $('#address_current').text(results[1].formatted_address);
            } else {
                alert('No results found');
            }
        } else {
            var error = {
                'ZERO_RESULTS': 'Kunde inte hitta adress'
            }

            // alert('Geocoder failed due to: ' + status);
            $('#address_new').html('<span class="color-red">' + error[status] + '</span>');
        }
    });
}

1 个答案:

答案 0 :(得分:10)

要获得最精确的结果,请使用第一个结果(results[0]),而不是第二个结果(results[1]):

function coordinates_to_address(lat, lng) {
    var latlng = new google.maps.LatLng(lat, lng);

    geocoder.geocode({'latLng': latlng}, function(results, status) {
        if(status == google.maps.GeocoderStatus.OK) {
            if(results[0]) {
                $('#address_current').text(results[0].formatted_address);
            } else {
                alert('No results found');
            }
        } else {
            var error = {
                'ZERO_RESULTS': 'Kunde inte hitta adress'
            }

            // alert('Geocoder failed due to: ' + status);
            $('#address_new').html('<span class="color-red">' + error[status] + '</span>');
        }
    });
}