我正在尝试将OverlappingMarkerSpiderfier集成到我的项目中,该项目正在使用传单。如果我查看demo,我必须相信这是有效的,但是,我想加载地图的状态是彼此接近的标记已经消耗而不必点击任何组。但是,从文档中我无法真正看到如何做到这一点,我也担心缩放事件,因为演示会在任何缩放事件中折叠组。
所以,我的问题如下:如何使用OverlappingMarkerSpiderfier for leaflet在地图加载时展开所有组并在地图缩放时重新计算?
编辑:
这就是我尝试使用它的方式:
var omsOptions = {
keepSpiderfied: true,
nearbyDistance: 300
};
var oms = new OverlappingMarkerSpiderfier(map, omsOptions);
for (var cachedMarkerIndex in cachedMarkers) {
oms.addMarker(cachedMarkers[cachedMarkerIndex]);
}
希望keepSpiderfied将它们保持蜘蛛状,但不仅它不是以蜘蛛状方式初始化标记,而且如果我点击地图上的任意位置它也会折叠标记。我真的不打算批评这个库,因为我认为它对于它的作者来说是一个很好的主意和荣誉,但是,如果我不需要支持我需要的功能,那么我将不得不编写自己的库而不是使用这个库。
答案 0 :(得分:1)
直接没有..没有类方法或选项让标记蜘蛛侠。关于第39行的plugins script,定义了一些map事件定位器:@map.addEventListener(e, => @['unspiderfy']()) for e in ['click', 'zoomend']
。因此,在地图的每次点击或缩放事件中,标记都会被取消分类。因此,您必须编写自己的库或通过添加其他选项来增强现有库。
步骤:
我已添加
this.options = opt;
到_Class
function
以确保以后可以使用这些选项。
if (this.options.DisableSpiderfy) {
//Spiderfy is disabled
return;
}
指向function
的{{1}}。
p.spiderfy
指向if (this.options.DisableUnspiderfy) {
//Unspiderfy was disabled
return;
}
的{{1}}。
用法示例:
function
通过这些更改,我已经达到了可以根据自己的喜好打开/关闭spiderfy / unspiderfy的程度,允许我从一开始就抓住所有标记,并且不会在任意点击时取消它们。不幸的是,这是一个黑客,并将与该库的未来版本不兼容,但是,它现在是一个很好的解决方案。