功能缩放到集群关闭具有相同纬度/经度的多个标记的集群
Posted
技术标签:
【中文标题】功能缩放到集群关闭具有相同纬度/经度的多个标记的集群【英文标题】:function zoom to cluster closes cluster with multiple markers at same lat/lng 【发布时间】:2018-02-16 09:30:34 【问题描述】:我正在创建一个带有传单的地图,带有标记集群和标记集群图层支持插件。
我有一个带有多个叠加层的图层控件,因此其中一些带有不同数据的选中标记会在相同的 lat/lng 弹出。
这些点可以正确聚类,但是我遇到了一个问题,如果我单击同一 lat/lng 的一组点,则该聚类不会居中,因此它通常会偏向一边并且很难除非您手动单击并拖动以使其居中,否则请查看。
如果我单击具有不同 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
);
【问题讨论】:
【参考方案1】:您可能应该在您的markerClusters
MCG 上使用"spiderfied"
事件,而不是"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/
【讨论】:
谢谢!!这行得通!有什么方法可以使“平移”运动更顺畅?现在我点击它,它有点猛地使集群居中。抱歉,我不确定这是否会被视为一个新问题。以上是关于功能缩放到集群关闭具有相同纬度/经度的多个标记的集群的主要内容,如果未能解决你的问题,请参考以下文章
如何将谷歌地图标记的纬度和经度发送到 Firebase - android? [关闭]