【发布时间】:2015-06-09 15:18:00
【问题描述】:
使用 Google Maps v3 并使用 markerclusterplus.js 进行标记聚类 (link)。
目前一切正常。现在我想要做的是在markerClusterer的点击时显示一个信息窗口,如果它的maxZoom已经达到。就目前而言,我将 maxZoom 设置为 15。这个想法是,如果有人点击一个集群,它将继续缩放,直到它不再是一个集群并显示多个标记,或者它达到 maxZoom (15),它仍然是一个由多个标记组成的集群.如果它达到 maxZoom,集群中可能包含任意数量的标记,所有这些都可以使用 c.getMarkers()); 检索,然后我可以使用返回的标记数组来显示一个包含整个组信息的信息窗口。
我的问题是......if(map.getZoom() == 15) 是一个合法的测试来了解集群何时达到其缩放级别? 15也是我设置的maxZoom,但是会不会有只能缩放到16、17、20等的情况呢?如果是这样,我的逻辑将不起作用,并且在这些情况下不会显示信息窗口......有没有办法测试地图是否不能进一步缩放?
出于某种原因,我认为世界某些地区的缩放级别有限。一部分可能可以放大到 4,而另一部分可能只能放大到 20。这就是我提出问题的原因。这样做的重点是显示有关多个标记的信息,这些标记要么是准确的位置,要么是非常接近的位置。
集群逻辑:
// var map = my google map
// var markers = my array of markers
// set mc options
var mcOptions = {
gridSize: 50,
maxZoom: 15,
title: 'Multiple Users'
};
//set marker clusterer
var markerCluster = new MarkerClusterer(map, markers, mcOptions);
//markercluster listener
google.maps.event.addListener(markerCluster, "click", function (c) {
console.log('zoom is : '+map.getZoom());
console.log('zoom on click is : '+markerCluster.getZoomOnClick());
console.log('array of markers is : '+c.getMarkers());
if(map.getZoom() == 15)
{
//display infowindow with all marker info
}
});
markerCluster.getZoomOnClick(); 无论是否达到 maxZoom 级别都会返回 true,所以我认为这不会有用。
另一方面,map.getZoom(); 会显示当前的缩放级别,所以如果我知道缩放级别总是可以达到至少 15,一切都应该可以正常工作,但这是我的问题......会吗?
【问题讨论】:
标签: google-maps google-maps-api-3