谷歌地图点击标记

时间:2012-10-06 07:29:00

标签: jquery google-maps google-maps-markers

我有一张地图和多个标记。我已经在地图容器上附加了一个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 个答案:

答案 0 :(得分: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);
});

希望这会有所帮助!

答案 1 :(得分:1)

您必须抓住event,然后致电event.preventDefault,其中您拥有infoWindow的.click功能。

答案 2 :(得分:1)

你可以做那样的事情

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


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

 $(this).removeClass("foo")
})

答案 3 :(得分:1)

你的问题是

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

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