如何通过给定的lat / long获取地址

时间:2013-12-23 12:14:31

标签: javascript google-maps reverse-geocoding

如何通过给定的lat / long而不是location来获取地址。我试过了 “反向地理编码”,但它只显示位置名称。

我的代码是

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
var geocoder;
var map;
var marker;
var marker2;

function initialize() {
    geocoder = new google.maps.Geocoder();
    var
    latlng = new google.maps.LatLng(-34.397, 150.644);
    var mapOptions = {
        zoom: 5,
        center: latlng
    }
    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
    google.maps.event.addListener(map, 'click', function (event) {
        //alert(event.latLng);          
        geocoder.geocode({
            'latLng': event.latLng
        }, function (results, status) {
            if (status ==
                google.maps.GeocoderStatus.OK) {
                if (results[1]) {
                    alert(results[1].formatted_address);
                } else {
                    alert('No results found');
                }
            } else {
                alert('Geocoder failed due to: ' + status);
            }
        });
    }); <!--click event--> }
    google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map-canvas"></div>

5 个答案:

答案 0 :(得分:3)

检查这两个参考文献:

How to get address location from latitude and longitude in Google Map.?

Get location address from Latitude and Longitude in google maps

这些答案对你有帮助。

使用此网址获取地址:

http://maps.googleapis.com/maps/api/geocode/json?latlng=44.4647452,7.3553838&sensor=true

答案 1 :(得分:2)

街道号码地址为索引0.使用

results[0].formatted_address

而不是

results[1].formatted_address

您将获得地址

例如,在索引0,你得到:&#34; 36 Osborne Street,Wollongong ...&#34; ,在索引1你得到&#34;卧龙岗医院Crown St,Wollongong ......&#34;

您可以使用

获取formatted_address的组件
results[0].address_components[0]
...
results[0].address_components[5]

答案 2 :(得分:1)

我认为你在寻找的是:

results[1].geometry.location

答案 3 :(得分:1)

将您的纬度、经度和 API 密钥传递给以下 API

$.get({ url: `https://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${longi}&sensor=false&key=${apikey}`, success(data) {
    console.log(data.results[0].formatted_address);
}});

答案 4 :(得分:0)

尝试将lat和long传递给以下查询字符串,然后您将获得一个json数组,从那里获取您的城市

http://maps.googleapis.com/maps/api/geocode/json?latlng=44.4647452,7.3553838&sensor=true