使用jQuery在Google地图上进行空闲事件

时间:2011-09-15 08:09:16

标签: jquery events google-maps

我在我的网站上设置了一个谷歌地图,我希望每当地图的边界发生变化时(通过拖动或缩放)重新加载标记。

我正在使用jQuery添加地图并首先清除标记:

$('#map_canvas').gmap();
$('#map_canvas').gmap('clear', 'markers');

然后,添加标记:

$('#map_canvas').gmap('addMarker', {'position': position, 'bounds': true });

我的问题: 我怎样才能“抓住”移动地图的事件?我已经读过有空闲事件,I saw an example

google.maps.event.addListener(map, 'idle', function() {
});

但我放的任何东西而不是“map”变量都不起作用...... 我也尝试过:

map = new google.maps.Map(document.getElementById("map_canvas"));

有没有人有想法?

非常感谢,

丹尼

2 个答案:

答案 0 :(得分:3)

对于遇到此问题的其他人:

您可以像这样获取地图对象/变量:

$('#map_canvas').gmap();
var map = $('#map_canvas').gmap('get', 'map');

获得地图对象后,您可以将事件侦听器附加到它:

$(map).addEventListener('idle', function() {
    console.log('Map is now idle');
    console.log(map.getCenter());
});

HTH

答案 1 :(得分:1)

在您定义的函数中,您可以随心所欲地执行任何操作。它总是被称为地图边界变化。例如:

google.maps.event.addListener(map, 'idle', function() {
 var bounds = map.getBounds();
 var sw = bounds.getSouthWest();
 var ne = bounds.getNorthEast();
 alert("minimum lat of current map view: " + sw.lat());
});

“map”应该是您之前创建的Google地图。

var map = new google.maps.Map( document.getElementById('map_canvas'), myOptions );

干杯! 托马斯