无法使用Google地图API获取用户的当前位置

时间:2015-07-08 06:25:54

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

我正在尝试使用谷歌地图API使用java脚本显示当前位置的地图,但无法获取用户的当前位置。我正在解释下面的代码。

window.onload = function () {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(success);
        } else {
            alert("Geo Location is not supported on your current browser!");
        }
        function success(position) {
            var lat = position.coords.latitude;
            var long = position.coords.longitude;
            var city = position.coords.locality;
            var myLatlng = new google.maps.LatLng(lat, long);
            var myOptions = {
                center: myLatlng,
                zoom: 12,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("map"), myOptions);
            var marker = new google.maps.Marker({
                position: myLatlng,
                title: "lat: " + lat + " long: " + long + "city:" + city
            });
            marker.setMap(map);
            var infowindow = new google.maps.InfoWindow({ content: "<b>User Address</b><br/> Latitude:" + lat + "<br /> Longitude:" + long + "<br /> City:"+city+"" });
            infowindow.open(map, marker);
        }
    }

我也使用以下脚本链接。

<script type="text/javascript" src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=AIzaSyBIHSCiXA9Nfc6c40gSMMJ5ZaBHkcm1PoA&sensor=false"></script>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>

但最后它给了我输出城市名称undefined。请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

从position.coords获取lat和lng后,您可能需要使用地理编码器来获取城市名称。检查下面的代码

function codeLatLng(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]) {

                            var arrAddress = results;
                            console.log(results);
                            // iterate through address_component array
                            $
                                    .each(
                                            arrAddress,
                                            function(i, address_component) {

                                                if (address_component.types[0] == "locality") {
                                                    console.log("City: "
                                                                    + address_component.address_components[0].long_name);
                                                    itemLocality = address_component.address_components[0].long_name;
                                                }
                                            });

                        } else {
                            alert("No results found");
                        }
                    } else {
                        alert("Geocoder failed due to: " + status);
                    }
                });

}

答案 1 :(得分:0)

虽然谷歌上可能发现很多包含coords.locality的例子,但这个属性没有在某处记录(至少不在Geolocation-API中)

您需要运行地理编码才能获得城市名称等详细信息。