javascript - MarkerClusterer 是集群中的标记?

标签 javascript google-maps google-maps-markers markerclusterer

我将标记放入簇中:

var markerClusterer = new MarkerClusterer(map, markers, {
    zoomOnClick : false,
    maxZoom : 13,
    gridSize : 100
});

我有 15 个标记。其中 10 个位于 map 中的集群中。如何判断标记是否在簇中。

var clusteredMarkers = markerClusterer.getTotalMarkers();
for(i = 0; i < clusteredMarkers.length; i++) {
    if(isInCluster((clusteredMarkers[i])) {
        clusteredMarkers[i].infobox.close();        
    }
}

如何定义像 isInCluster(marker) 这样的函数,使信息框仅在不在任何簇中的标记中打开(即 5 个信息框必须可见)?

最佳答案

MarkerClusterer 会将标记的 map 设置为 null(如果它在集群中),这样它就不再显示在 map 上。 MarkerClusterer 然后会在标记的 map 不再位于集群中时将其设置回 map。您可以尝试检查每个标记:

var mapOptions = {            // Notice that mapZoom is not set
    center: new google.maps.LatLng( 19, 19 ),
    mapTypeId: google.maps.MapTypeId.ROADMAP };

map = new google.maps.Map( document.getElementById( "map_canvas" ), mapOptions );
var markerClusterer = new MarkerClusterer( map, markers, { ... });

//Whenever the map completes panning or zooming, the function will be called:
google.maps.event.addListener( map, "idle", function() {
    for ( var i = 0; i < markers.length; i++ ) {
        var mrkr = markers[i];
        if ( mrkr.getMap() != null ) {
            mrkr.infobox.open(); 
        }
        else {
            mrkr.infobox.close(); 
        }
    }
}

//Now that map, markerClusterer, and the "idle" event callback are in place,
//set the zoom, which will trigger the "idle" event callback 
//after the zoom activity completes,
map.setZoom( 19 ); //Or whatever is appropriate

//Thereafter, the callback will run after any pan or zoom...

显然,标记的状态可能会在放大、缩小或任何其他视口(viewport)更改后发生变化,因此您必须在视口(viewport)更改后重新检查。

关于javascript - MarkerClusterer 是集群中的标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10510478/

相关文章:

javascript - 将字节转换为图像以在 HTML5 Canvas 上绘制

javascript - 将 map 视口(viewport)点击位置转换为 map 坐标(Bing map )

c# - 如何在谷歌地图或必应 map 上检索建筑物的坐标(长、宽、高)?

android - 在android上不使用 map 对象的附近地点列表

android - 如何在 Uber 和 Lyft 等 map 上附加灵活的标记?

javascript - 如何使用 div 的 ScrollTo() ?

javascript - 学习到 angular : ng-view not loading, 为什么?

javascript - 无法加载我的谷歌地图小部件。它工作得很好,直到我决定将其隐藏(使用 .hide)

javascript - 触发 infoWindow 单击 - 未捕获的 TypeError : Cannot read property '__e3_' of undefined

android - 在位置更改时将标记动画化到当前位置