点击缩放时的markerClusterer

| 我刚刚在我的Google地图中添加了MarkerClusterer。它工作得很好。 我只是想知道单击群集时是否有任何方法可以调整放大行为。如果可能,我想更改缩放级别。 有什么办法可以做到这一点? 谢谢
已邀请:
MarkerClusterer源代码进行了更新,可以更轻松地访问click事件:
google.maps.event.addListener(markerCluster, \'clusterclick\', function(cluster) {
    // your code here
});
\'markerCluster \'包含MarkerCluster对象。 在功能内您也可以访问
cluster.getCenter();
cluster.getMarkers();
cluster.getSize();
我使用此选项切换到其他地图类型,因为我使用了自定义图块集,以便在较低的缩放级别上更轻松地进行查看:
map.setCenter(cluster.getCenter()); // zoom to the cluster center
map.setMapTypeId(google.maps.MapTypeId.ROADMAP); // switch map type
map.setOptions(myMapOptions); // apply some other map options (optional)
问候 插口
您可以通过在clusterclick markerClusterer事件上使用侦听器来执行此操作,而无需修改源代码:
var mcOptions = {gridSize: 40, maxZoom: 16, zoomOnClick: false, minimumClusterSize: 2};
markerClusterer = new MarkerClusterer(map, markers, mcOptions);

google.maps.event.addListener(markerClusterer, \'clusterclick\', function(cluster){
    map.setCenter(markerClusterer.getCenter());
    map.setZoom(map.getZoom()+1);
});
即。我设置zoomOnClick = false可以更好地控制地图的缩放行为,以控制每次单击触发的缩放量和缩放位置。
我按照建议修改了clusterclick事件:
/**
* Triggers the clusterclick event and zoom\'s if the option is set.
*/
ClusterIcon.prototype.triggerClusterClick = function() {
var markerClusterer = this.cluster_.getMarkerClusterer();

// Trigger the clusterclick event.
google.maps.event.trigger(markerClusterer, \'clusterclick\', this.cluster_);

if (markerClusterer.isZoomOnClick()) {
// Zoom into the cluster.
// this.map_.fitBounds(this.cluster_.getBounds());

// modified zoom in function
this.map_.setZoom(markerClusterer.getMaxZoom()+1);

 }
};
效果很好!非常感谢
看来API仅会让您切换缩放功能 http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html 所以您将必须编辑源,它似乎在第1055行
/**
 * Triggers the clusterclick event and zoom\'s if the option is set.
 */
ClusterIcon.prototype.triggerClusterClick = function() {
  var markerClusterer = this.cluster_.getMarkerClusterer();

  // Trigger the clusterclick event.
  google.maps.event.trigger(markerClusterer, \'clusterclick\', this.cluster_);

  if (markerClusterer.isZoomOnClick()) {
    // Zoom into the cluster.
    this.map_.fitBounds(this.cluster_.getBounds());
  }
};
如果有人需要用coffeescript编写此函数,则可以将顶部答案和标记答案合并为一个代码段。
mcOptions =
  maxZoom: 16

markerCluster = new MarkerClusterer map, markers, mcOptions
# listener if a cluster is clicked
google.maps.event.addListener markerCluster, \"clusterclick\", (cluster) ->
  if markerCluster.isZoomOnClick() # default is true
    #get bounds of cluster
    map.fitBounds cluster.getBounds()
    #zoom in to max zoom plus one. 
    map.setZoom markerCluster.getMaxZoom() + 1
此代码检查是单击放大设置。如果是,请放大至最大缩放加一,并以群集为中心。非常简单的代码。

要回复问题请先登录注册