Google Maps API 3 - 地理编码无法正常工作

3

这是我的目前的代码(我感觉问题出在codeAddress函数中):

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>`
<script>
    var geocoder;
    var map;
    function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var mapOptions = {
        zoom: 8,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
    }

    function codeAddress() {
    var address = document.getElementById("address").text;
    geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
        } else {
        alert("Geocode was not successful for the following reason: " + status);
        }
    });
    }

    google.maps.event.addDomListener(window, 'load', codeAddress);
    google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map-canvas" style="width: 100%; height: 320px;" ></div>
<div id="address">92867</div>

我想要的是当页面加载时,地址会通过PHP自动填充。我希望在填充完地址后运行codeAddress。如何修改这个脚本以使用我指定地址的正确代码来替换var latlng = new google.maps.LatLng(-34.397, 150.644);

1个回答

3
  1. 移除
    google.maps.event.addDomListener(window, 'load', codeAddress);
    并将
    codeAddress()
    添加到 initialize() 的末尾,确保当执行 codeAddress(); 时地图已经创建完成。

  2. 将这行代码:
    var address = document.getElementById("address").text;
    替换为:
    var address = document.getElementById("address").firstChild.data;
    对于 <div/> 标签没有 text 属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接