【发布时间】:2015-06-26 07:40:06
【问题描述】:
我有一个谷歌地图,它会根据dragend 和zoom_changed 事件更新其上的所有标记。除了地图的初始加载外,一切正常。地图加载后为空。在initialize() 结束时,我调用google.maps.event.trigger(map, 'dragend') 尝试调用dealWithNewWindow 函数,以便地图填充标记,但没有任何反应?
initialize = function() {
mapOptions = {
center: { lat: 51, lng: 0 },
zoom: 9
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
map.setCenter(new google.maps.LatLng(51,0));
google.maps.event.addListener(map, 'zoom_changed', dealWithNewWindow);
google.maps.event.addListener(map, 'dragend', dealWithNewWindow);
function dealWithNewWindow(event) {
killAllMarkers();
var bounds = map.getBounds();
var nelat = bounds.getNorthEast().lat();
var swlat = bounds.getSouthWest().lat();
var nelng = bounds.getNorthEast().lng();
var swlng = bounds.getSouthWest().lng();
var mapBounds = {NElatitude:nelat, SWlatitude:swlat, NElongitude:nelng, SWlongitude:swlng};
$.ajax({
type : 'POST',
url : '/maprequest',
dataType : 'script',
data : { NElatitude:nelat, SWlatitude:swlat, NElongitude:nelng, SWlongitude:swlng }
});
};
google.maps.event.trigger(map, 'dragend');
};
google.maps.event.addDomListener(window, 'load', initialize);
编辑:
我已经解决了这个问题。页面刷新后,javascript 在 dealWithNewWindow:var nelat = bounds.getNorthEast().lat(); 中的这一行期间停止。出于某种原因,此代码在之后更改地图边界时运行良好,但在第一次加载地图时却失败了。
【问题讨论】:
-
我删除了 ruby-on-rails 标签,因为它不相关;您的问题中没有一行 Ruby
-
我会将
dealWithNewWindow的声明移到您的initialize函数之外 -
好点重轨。我已将
dealWithNewWindow移到initialize之外,遗憾的是仍然无法正常工作。 -
我认为您必须为地图
idle事件创建一个事件侦听器,才能创建初始边界对象