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 行目のプラグイン スクリプトに関しては、いくつかのマップ eventListeners が定義されています@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 しないようにすることができます。残念ながら、これはハックであり、ライブラリの将来のバージョンとは互換性がありませんが、現時点では良い解決策です。

于 2016-11-02T13:29:31.923 に答える