Leaflet 是否可以从一开始就用重叠标记器扩展传单标记器?

Leaflet 是否可以从一开始就用重叠标记器扩展传单标记器?,leaflet,oms,Leaflet,Oms,我正试图融入我的项目,这是使用传单。如果我看一下,我不得不相信这是可行的,但是,我想在一个状态下加载地图,即彼此接近的标记被消耗掉,而不必单击任何组。然而,从文档中我看不出这是如何做到的,我也担心缩放事件,因为演示会在任何缩放事件上折叠组 所以,我的问题如下:如何在地图加载时使用重叠标记器展开传单的所有组,并在地图缩放时重新计算 编辑: 这就是我试图使用它的方式: var omsOptions = { keepSpiderfied: true, nearbyDistance: 3

我正试图融入我的项目,这是使用传单。如果我看一下,我不得不相信这是可行的,但是,我想在一个状态下加载地图,即彼此接近的标记被消耗掉,而不必单击任何组。然而,从文档中我看不出这是如何做到的,我也担心缩放事件,因为演示会在任何缩放事件上折叠组

所以,我的问题如下:如何在地图加载时使用重叠标记器展开传单的所有组,并在地图缩放时重新计算

编辑:

这就是我试图使用它的方式:

var omsOptions = {
    keepSpiderfied: true,
    nearbyDistance: 300
};
var oms = new OverlappingMarkerSpiderfier(map, omsOptions);
for (var cachedMarkerIndex in cachedMarkers) {
    oms.addMarker(cachedMarkers[cachedMarkerIndex]);
}

希望keepSpiderfied能够保持它们的蜘蛛化,但它不仅没有以蜘蛛化的方式初始化标记,而且如果我单击地图上的任意位置,它还会折叠标记。我真的不打算批评这个库,因为我相信这是一个好主意,也是作者的荣誉。但是,如果我需要的功能不受支持,那么我将不得不编写我自己的库,而不是使用这个库。

直接不。。没有类方法或选项使标记蜘蛛化。关于第39行,定义了一些映射事件监听器:
@map.addEventListener(e,=>@['unsiderfy']),用于['click','zoomend']
中的e。因此,在地图的每次单击或缩放事件中,标记都会被取消。因此,您必须编写自己的库或通过添加附加选项来增强现有库

编辑(LajosÁrpád):

步骤:

  • 我补充说

    this.options=opt

  • 转到
    \u类
    功能
    ,以确保以后可以使用这些选项

  • 我补充说
  • if(this.options.DisableSpiderfy){
    //蜘蛛侠被禁用了
    返回;
    }

    分配给
    p.spiderfy
    功能

  • 我补充说
  • if(this.options.disableUnsiderfy){
    //Unsiderfy被禁用了
    返回;
    }

    分配给
    p[“unsiderfy”]
    功能

    用法示例:

            `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);
                }
            }`
    

    通过这些更改,我已经达到了可以根据自己的喜好打开/关闭spiderfy/unsiderfy的程度,允许我从一开始就对所有标记进行spiderfy,而不是通过任意单击来取消spiderfy。不幸的是,这是一种黑客行为,无法与该库的未来版本兼容,但是,目前这是一个很好的解决方案。

    Hm为什么要扩展mapstart上的所有组?这和没有蜘蛛侠一样令人困惑。但我认为你只想为少数群体做这件事。我要一个look@Manuel,这在我的情况下是可取的,因为有许多标记,必须显示所有标记。如果用户必须单击每个组中的一个标记,那么页面就不是用户友好的,因为我正在显示要完成的工作,并且必须看到所有标记。必须在每个组中至少单击一个标记会造成麻烦,如果一个标记可能在多个组中,则在处理它们时存在冗余的危险。在演示中显示Happiness的情况下,UX最好使用单击展开方法。但就我而言,这将破坏图书馆的好处。曼纽尔,谢谢你的回答。有没有一种方法可以将咖啡脚本反转为Javascript?没关系,找到了这个:。我会尝试你的想法,再次感谢……曼纽尔,在此期间,我能够解决这个问题,但在目前的状态下无法接受你的答案。如果你允许我用遗漏的内容编辑你的答案,我会接受的。好的,很高兴看到你的解决方案!我对你如何解决这个问题很感兴趣