是否有可能从一开始就使用OverlappingMarkerSpiderfier扩展标记用于传单?

时间:2016-11-02 12:25:44

标签: leaflet oms

我正在尝试将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将它们保持蜘蛛状,但不仅它不是以蜘蛛状方式初始化标记,而且如果我点击地图上的任意位置它也会折叠标记。我真的不打算批评这个库,因为我认为它对于它的作者来说是一个很好的主意和荣誉,但是,如果我不需要支持我需要的功能,那么我将不得不编写自己的库而不是使用这个库。

1 个答案:

答案 0 :(得分:1)

直接没有..没有类方法或选项让标记蜘蛛侠。关于第39行的plugins script,定义了一些map事件定位器:@map.addEventListener(e, => @['unspiderfy']()) for e in ['click', 'zoomend']。因此,在地图的每次点击或缩放事件中,标记都会被取消分类。因此,您必须编写自己的库或通过添加其他选项来增强现有库。

编辑(由LajosÁrpád撰写):

步骤:

  1. 我已添加

    this.options = opt;

  2. _Class function以确保以后可以使用这些选项。

    1. 我已添加
    2. if (this.options.DisableSpiderfy) { //Spiderfy is disabled return; }

      指向function的{​​{1}}。

      1. 我已添加
      2. p.spiderfy

        指向if (this.options.DisableUnspiderfy) { //Unspiderfy was disabled return; }的{​​{1}}。

        用法示例:

        function

        通过这些更改,我已经达到了可以根据自己的喜好打开/关闭spiderfy / unspiderfy的程度,允许我从一开始就抓住所有标记,并且不会在任意点击时取消它们。不幸的是,这是一个黑客,并将与该库的未来版本不兼容,但是,它现在是一个很好的解决方案。