是否可以从 OverlappingMarkerSpiderfier 开始为传单扩展标记?
Is it possible to expand markers from the start with OverlappingMarkerSpiderfier for leaflet?
我正在尝试整合 OverlappingMarkerSpiderfier into my project, which is using leaflet. If I look at the 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 会让它们保持 spiderfied,但它不仅不会以 spiderfied 的方式初始化标记,而且如果我单击地图上的任意位置,它还会折叠标记。我真的无意批评这个库,因为我相信这是一个绝妙的想法,也是对其作者的荣誉,但是,如果不支持我需要的功能,那么我将不得不编写自己的库而不是使用这个库。
直接不.. 没有 class 方法或选项可以让标记蜘蛛化。关于第 39 行的 plugins script,定义了一些映射事件监听器:@map.addEventListener(e, => @['unspiderfy']()) for e in ['click', 'zoomend']
。因此,在地图的每次点击或缩放事件中,标记都会消失。因此,您必须编写自己的库或通过添加附加选项来增强现有库。
编辑(作者:Lajos Árpád):
步骤:
我已添加
this.options = opt;
到 _Class
function
以确保以后可以使用这些选项。
- 我已经添加了
if (this.options.DisableSpiderfy) {
//Spiderfy is disabled
return;
}
给function
分配给p.spiderfy
.
- 我已经添加了
if (this.options.DisableUnspiderfy) {
//Unspiderfy was disabled
return;
}
给function
分配给p["unspiderfy"]
.
用法示例:
`var omsOptions = {
keepSpiderfied: true,
nearbyDistance: 100,
DisableUnspiderfy: true
};
var oms;
function drawSpiderMarkers(rows, options) {
drawMarkers(rows, options); //This function draws markers by marker options
if (!oms) {
setTimeout(function() {
oms = new OverlappingMarkerSpiderfier(map, omsOptions);
for (var cachedMarkerIndex in cachedMarkers) {
oms.addMarker(cachedMarkers[cachedMarkerIndex]);
}
for (var cachedMarkerIndex in cachedMarkers) {
oms.spiderListener(cachedMarkers[cachedMarkerIndex]);
}
}, 200);
}
}`
通过这些更改,我已经达到了可以根据自己的喜好切换 on/off spiderfy/unspiderfy 的地步,允许我从一开始就对所有标记进行 spiderfy,而不是在任意单击时取消对它们的 spiderfy .不幸的是,这是一个 hack,将与库的未来版本不兼容,但是,它现在是一个很好的解决方案。
我正在尝试整合 OverlappingMarkerSpiderfier into my project, which is using leaflet. If I look at the 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 会让它们保持 spiderfied,但它不仅不会以 spiderfied 的方式初始化标记,而且如果我单击地图上的任意位置,它还会折叠标记。我真的无意批评这个库,因为我相信这是一个绝妙的想法,也是对其作者的荣誉,但是,如果不支持我需要的功能,那么我将不得不编写自己的库而不是使用这个库。
直接不.. 没有 class 方法或选项可以让标记蜘蛛化。关于第 39 行的 plugins script,定义了一些映射事件监听器:@map.addEventListener(e, => @['unspiderfy']()) for e in ['click', 'zoomend']
。因此,在地图的每次点击或缩放事件中,标记都会消失。因此,您必须编写自己的库或通过添加附加选项来增强现有库。
编辑(作者:Lajos Árpád):
步骤:
我已添加
this.options = opt;
到 _Class
function
以确保以后可以使用这些选项。
- 我已经添加了
if (this.options.DisableSpiderfy) {
//Spiderfy is disabled
return;
}
给function
分配给p.spiderfy
.
- 我已经添加了
if (this.options.DisableUnspiderfy) {
//Unspiderfy was disabled
return;
}
给function
分配给p["unspiderfy"]
.
用法示例:
`var omsOptions = {
keepSpiderfied: true,
nearbyDistance: 100,
DisableUnspiderfy: true
};
var oms;
function drawSpiderMarkers(rows, options) {
drawMarkers(rows, options); //This function draws markers by marker options
if (!oms) {
setTimeout(function() {
oms = new OverlappingMarkerSpiderfier(map, omsOptions);
for (var cachedMarkerIndex in cachedMarkers) {
oms.addMarker(cachedMarkers[cachedMarkerIndex]);
}
for (var cachedMarkerIndex in cachedMarkers) {
oms.spiderListener(cachedMarkers[cachedMarkerIndex]);
}
}, 200);
}
}`
通过这些更改,我已经达到了可以根据自己的喜好切换 on/off spiderfy/unspiderfy 的地步,允许我从一开始就对所有标记进行 spiderfy,而不是在任意单击时取消对它们的 spiderfy .不幸的是,这是一个 hack,将与库的未来版本不兼容,但是,它现在是一个很好的解决方案。