0

我有一张地图和多个标记。我已经click在地图容器上附加了一个事件,以使用动画消失地图上显示的任何内容(我有图例、时间线等)。

我的问题是,当您单击标记以查看 时infoWindow,它还会触发地图上的click事件,该事件会消失在地图上的图层对象上。所以,我想防止地图容器已经分配事件,当点击标记时,只会出现 infoWindow 而不会出现其他任何内容。

这是地图点击事件:

$('#map_canvas').bind('mousedown', function() { ...

我在标记上唯一能看到的是它们都具有相同的类:gmnoprint

我已经测试过这个:

$('#map_canvas').not('.gmnoprint').bind('mousedown', function() { ...

和:

$('#map_canvas').bind('mousedown', function() {

    if ($(this).is('.gmnoprint'))
        return false;
....

但他们都没有工作。任何人都知道如何解决这个问题?

提前致谢!

4

4 回答 4

1

我会尝试使用 google maps API 事件侦听器,因为它们在与地图元素交互时将是最可靠的:

https://developers.google.com/maps/documentation/javascript/events https://developers.google.com/maps/documentation/javascript/overlays#InfoWindows

这是 gmaps API 中用于绑定单击以打开与标记关联的信息窗口的基本语法:

google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map,marker);
});

希望这会有所帮助!

于 2012-10-06T07:43:46.907 回答
1

您必须捕获event然后调用event.preventDefault具有.clickinfoWindow 功能的位置。

于 2012-10-06T07:44:19.323 回答
1

你可以做这样的事情

    <div id="map_canvas" class="foo"></div>


$("#map_canvas").hasClass("foo").click(function(){

 $(this).removeClass("foo")
})
于 2012-10-06T07:45:05.507 回答
1

你的问题是

$('#map_canvas').bind(...

那些标记/信息窗口在那个 map_canvas div 中,所以你在技术上点击它

于 2012-10-06T09:31:45.497 回答