将标记添加到现有谷歌地图而不被调用的功能

时间:2014-08-25 10:50:51

标签: javascript google-maps

当我在初始化函数中调用codeAddress函数时,它会被调用,但是当它在其他地方时,如下例所示,它不会被调用。错误是什么?

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
  }

   map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
}

function codeAddress() {
  var marker = new google.maps.Marker({
    map: map,
    position: new google.maps.LatLng(-34.397, 150.644)
  });
}

google.maps.event.addDomListener(window, 'load', initialize);
codeAddress();

2 个答案:

答案 0 :(得分:0)

它发生了这种情况,因为在窗口完全加载后初始化了地图,因为当窗口开始加载时会立即执行codeAddress。在codeAddress中添加警报,您将自己解决。此外,当地图正确初始化时,我应该对地图进行任何操作。为此,请使用map idle listener来调用codeAddress。

答案 1 :(得分:0)

codeAddress函数要求之前执行initialize函数,因为在codeAddress中您引用了在{{1}中初始化的全局变量map }}

该行

initialize

google.maps.event.addDomListener(window, 'load', initialize); 注册为一个在DOM加载后立即执行的回调。但是当您在下一行调用initialize时,DOM可能尚未加载,因此codeAddress();可能尚未执行。

因此,调用initialize将在codeAddress内部工作,但不在您的示例中。