反向地理编码:我想要地址,而不是邮政编码

时间:2013-03-01 17:41:26

标签: javascript google-maps

我用过这个example 示例创建我的代码以从lat中查找地址。而且很长。坐标。

问题是,使用正确的坐标,我找到邮政编码而不是地址。相反,在示例中,它可以找到地址。 我也尝试使用逆方法。我使用了我在地址中找到的坐标,但是他们给了我邮政编码而不是地址。 我哪里错了?

我的代码如下:

<!DOCTYPE html>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> 
<HTML>
    <HEAD>
        <script type="text/javascript" src="jquery.js"></script>
        <META NAME="GENERATOR" Content="AlterVista - Editor HTML">
        <title>LowPricePetrol</title>
        <link rel="stylesheet" type="text/css" href="homeformat.css"/>
        <script type="text/javascript"
                src="https://maps.googleapis.com/maps/api/">
        </script>
        <script type="text/javascript">
            var geocoder;
            var map;
            var lat_;
            var lng_;
            var contentString="";
            var infowindow = null;

            if (navigator.geolocation) {
                    navigator.geolocation.getCurrentPosition(mia_posizione);
                }else{
                    alert('La geo-localizzazione NON è possibile');
                }


            function initialize() {
                infowindow = new google.maps.InfoWindow();
                geocoder = new google.maps.Geocoder();
                var latlng = new google.maps.LatLng(40.730885,-73.997383);
                var mapOptions = {
                    zoom: 8,
                    center: latlng,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                }
                map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
            }

            function mia_posizione(position) {
                var lat_gl = position.coords.latitude;
                var lon_gl = position.coords.longitude;

                var latlng = new google.maps.LatLng(lat_gl , lon_gl );
                alert(latlng);
                geocoder.geocode({'latLng': latlng}, function(results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        if (results[1]) {
                        alert(results[1].formatted_address);
                            map.setZoom(11);
                            marker = new google.maps.Marker({
                            position: latlng,
                            map: map
                            });
                            infowindow.setContent(results[1].formatted_address);
                            infowindow.open(map, marker);
                        }
                    } else {
                        alert("Geocoder failed due to: " + status);
                    }
                });
            }
        </script>
    </HEAD>
    <BODY onload="initialize();">
<div class="mapbox" id="map_canvas" style="width:700px; height:350px" ></div>

</BODY>
</HTML>

1 个答案:

答案 0 :(得分:0)

下面是在JSFIDDLE中添加了DEMO的完整工作示例:

<script type="text/javascript">
    function showAddress() {
        var map,marker,infoWindow, geocoder;
        var markerPoint = new google.maps.LatLng(12.397,78.644);
        var mapOptions = {
            center: new google.maps.LatLng(12.397,73.644),
            zoom:5,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"),
            mapOptions);
        google.maps.event.addListener(map,'click',function(e) {
            getAddress(e.latLng);
        });


    function getAddress(latLng) { 

        if(!geocoder) {
            geocoder = new google.maps.Geocoder();
        }
        var geocoderRequest = {
            latLng:latLng
        }
        geocoder.geocode(geocoderRequest, function(results, status) {
            if(!infoWindow) {
                infoWindow = new google.maps.InfoWindow();
            }
            infoWindow.setPosition(latLng);
            var content = "<h2>Position :" +latLng.toUrlValue()+ "</h2>"
            if(status == google.maps.GeocoderStatus.OK) {
                for(var i =0;i <results.length; i++) {
                    if(results[0].formatted_address) { 
                        content += i + ". " +results[i].formatted_address + "<br />";

                    }
                }

            }
            else {
                content += "<p>Either you clicked on Ocean or a Politically disputed Area. Status = " + status + "</p>"
            }
            infoWindow.setContent(content);
            infoWindow.open(map)
        });
    }
    }
</script>

DEMONSTRATION

单击地图将生成一个InfoWindow,并且此infowindow将根据反向地理编码显示所点击地点的地址。