谷歌地图显示不正确

问题描述 投票:-2回答:1

我将根据用户的地址在谷歌地图上显示公司的位置。顺便说一句,输入地址不同,但每次只显示相同的地址。帮帮我,我的代码是关注的。谢谢。

<!DOCTYPE html>
<html>
<body>

<h1>My First Google Map</h1>

<div id="googleMap" style="width:100%;height:400px;"></div>

<script>
function myMap() {
var address = "<?php echo $address;?>";
var latitude = 0;var longitude = 0;
    //alert(address);
    var geocoder = new google.maps.Geocoder();
    //var address = document.getElementById(address).value;
    geocoder.geocode({ 'address': address }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            latitude = results[0].geometry.location.lat();
            longitude = results[0].geometry.location.lng();
            alert("Latitude: " + latitude + "\nLongitude: " + longitude);
        } else {
            alert("Request failed.");
        }
    });
var mapProp= {
    center:new google.maps.LatLng(latitude,longitude),
    zoom:5,
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
}
</script>

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCY-        jGtLHPdttTiekXaSPncp6haCA3VeLU&callback=myMap"></script>


</body>
</html>
javascript php html
1个回答
0
投票

因为geocoder.geocode是异步的,所以在使用之前你不会更新latitudelongitude,因此你的地图中心是0,0

geocoder.geocode的回调中初始化地图,如下所示

function myMap() {
    var address = "<?php echo $address;?>";
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({
        'address': address
    }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var mapProp = {
                center: results[0].geometry.location,
                zoom: 5,
            };
            var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
        } else {
            console.error("Request failed.", status);
        }
    });
}

注意:在上面的代码中,我使用center: results[0].geometry.location,设置地图中心,以避免从LatLng对象解构lat / long,只是从检索到的坐标创建一个新的LatLng对象 - 似乎是浪费的努力:p

© www.soinside.com 2019 - 2024. All rights reserved.