带有Marker Manager Google Maps V3的信息窗口

时间:2011-09-26 16:55:54

标签: google-maps google-maps-markers infowindow markerclusterer

我有许多地图标记与完全相同的纬线/长线,所以无论我缩放多远,我的地图仍会显示标记簇和结果数。

有没有办法让一些onclick或onhover事件,以便它显示一个信息框,列表中该群集中的所有标记?然后单击该信息框中的链接会打开该单个标记信息框?

我已经阅读了一些解决方案来改变lat,长一点,以便它们不是同一个位置。我认为这是非常混乱的,如果最终在相同的位置上最终会有多个标记10+,那就不那么好了。我认为用户只需单击群集并打开信息窗口,其中包含链接中的所有标记就会轻松得多。

或者,如果有人知道另一个插件,我正在寻找我也可以使用它。我只是没有找到很多信息。

1 个答案:

答案 0 :(得分:1)

可能有一个插件可以做你想做的事情,但也可以不用一个。我在其中一个项目中做过类似的事情。

  1. 为每个标记添加事件监听器;单击打开标记列表信息窗口
  2. 标记列表信息窗口的内容包含将打开标记信息窗口的onclick属性。
  3. 我的代码隐藏在函数中,但基本上就是这样:

    //1) while creating marker, create click listener that opens the marker list
    google.maps.event.addListener(marker, 'click', function() {
        markerWindow.close();
        markerList.open(map, marker);
    });
    
    //2) store the content required by the marker's info windows
    var markers = [
        [marker1Reference, "The Stadium"],
        [maerker2Reference, "The Supermarket"]
    ];
    
    //3) the function that is called each time a marker is chosen from the marker list
    function openMarkerInfo(markerIndex) {
        markerList.close();
        markerWindow.setContent(markers[markerIndex][1]);
        markerWindow.open(map, markers[markerIndex][0]);
    }
    
    //4) info window for the marker list - the content includes JS onclick events that will open each marker info window
    markerList = new google.maps.InfoWindow({
        content: "Choose:<br><br><div href='' class='markerLink' onclick='openMarkerInfo(0)'>The Stadium</div><br><div href='' class='markerLink' onclick='openMarkerInfo(1)'>My House</div>"
    });
    //5) the marker window that will get set each time a marker is clicked in the list
    markerWindow = new google.maps.InfoWindow();
    

    希望有所帮助!