0

我正在创建带有传单的地图,带有标记集群和标记集群图层支持插件。

我有一个带有多个叠加层的图层控件,因此其中一些被选中的标记会在相同的纬度/经度处弹出不同的数据。

这些点可以正确聚类,但是我遇到了一个问题,如果我单击相同纬度/经度的点簇,则该簇不会居中,因此它通常会保持在一边并且很难看到,除非您手动单击并拖动以使其居中。

如果我单击具有不同 lat/lng 点的集群,它将放大并以该区域为中心。为了尝试解决这个问题,我添加了这 2 个函数,一个单独应用于标记,以便在单击它们时它们在地图上居中,一个应用于被单击的集群,导致地图缩放到集群的边界。

发生的情况是您将单击群集,它将展开并在同一点显示标记,但随后它将缩放群集并居中并关闭群集,因此您必须再次单击它才能显示标记。我不希望这种情况发生。

我在想也许使用 panTo 的函数在集群单击时会更好地工作?但不确定如何实现这一点。谢谢!这些是功能:

    markerClusters.on('clusterclick', function (a) {
        a.layer.zoomToBounds();
    });


    map.on('popupopen', function(e) {
var px = map.project(e.popup._latlng); // find the pixel location on the map where the popup anchor is
px.y -= e.popup._container.clientHeight/2 // find the height of the popup container, divide by 2, subtract from the Y axis of marker location
map.panTo(map.unproject(px),{animate: true}); // pan to new center

    });
4

1 回答 1

0

您可能应该在您的MCG上使用该"spiderfied"事件,而不是为不需要蜘蛛化的集群触发该事件。markerClusters"clusterclick"

此外,正如您所知道的,一旦您执行缩放,该操作就会关闭蜘蛛化。正如您所猜测的那样使用panTo可以避免缩放变化,因此不会关闭蜘蛛化。

markerClusters.on('spiderfied', function (event) {
  var cluster = event.cluster;

  // Center the map on the clicked cluster if it gets spiderfied.
  map.panTo(cluster.getLatLng());
});

演示:https ://jsfiddle.net/3v7hd2vx/397/

于 2017-09-08T07:23:09.593 回答