1

我正在尝试将OverlappingMarkerSpiderfier集成到我使用传单的项目中。如果我看演示,我必须相信这是可行的,但是,我想加载地图,使彼此靠近的标记被消耗,而不必单击任何组。但是,从文档中我无法真正看到如何做到这一点,而且我也担心缩放事件,因为演示会在任何缩放事件上折叠组。

所以,我的问题如下:如何使用 OverlappingMarkerSpiderfier 传单在地图加载时扩展所有组并在地图缩放时重新计算?

编辑:

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

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

希望 keepSpiderfied 能让它们保持蜘蛛化,但它不仅不会以蜘蛛化的方式初始化标记,而且如果我点击地图上的任意位置,它也会折叠标记。我真的不打算批评这个库,因为我相信这是一个绝妙的想法和对其作者的赞誉,但是,如果不支持我需要的功能,那么我将不得不编写自己的库而不是使用这个库。

4

1 回答 1

1

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

编辑(由 Lajos Árpád):

脚步:

  1. 我已经添加了

    this.options = opt;

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

  1. 我已经添加了

if (this.options.DisableSpiderfy) { //Spiderfy is disabled return; }

function分配给p.spiderfy.

  1. 我已经添加了

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

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

于 2016-11-02T13:29:31.923 回答