0

マーカー クラスターとマーカー クラスター レイヤー サポート プラグインを使用して、リーフレットでマップを作成しています。

複数のオーバーレイを持つレイヤー コントロールがあるため、それらのいくつかをチェックすると、同じ緯度/経度で異なるデータのマーカーがポップアップします。

これらのポイントは適切にクラスター化されていますが、同じ緯度/経度でポイントのクラスターをクリックすると、クラスターが中央に配置されないという問題が発生しています。手動でクリックしてドラッグし、中央に配置します。

緯度/経度が異なるポイントを持つクラスターをクリックすると、ズームインしてそのエリアが中心になります。これを修正するために、これら 2 つの関数を追加しました。1 つはマーカーに個別に適用して、クリックするとマーカーがマップの中心になるようにし、もう 1 つはクリックされたクラスターに適用して、マップがクラスターの境界にズームするようにします。

クラスターをクリックすると、展開して同じポイントにマーカーが表示されますが、クラスターをズームして中央に配置し、クラスターを閉じるため、もう一度クリックしてマーカーを表示する必要があります。私はこれが起こることを望んでいません。

panTo を使用する関数は、クラスターのクリックでうまく機能するのではないかと考えていますか? しかし、これを実装する方法がわかりません。ありがとう!これらは関数です:

    markerClusters.on('clusterclick', function (a) {
        a.layer.zoomToBounds();
    });


    map.on('popupopen', function(e) {
var px = map.project(e.popup._latlng); // find the pixel location on the map where the popup anchor is
px.y -= e.popup._container.clientHeight/2 // find the height of the popup container, divide by 2, subtract from the Y axis of marker location
map.panTo(map.unproject(px),{animate: true}); // pan to new center

    });
4

1 に答える 1

0

Spiderfy を実行する必要のないクラスターに対しても発生する代わりに、MCG で"spiderfied"イベントを使用する必要があります。markerClusters"clusterclick"

さらに、あなたが考え出したように、ズームを実行するとすぐに、その操作はスパイダーフィケーションを閉じます. あなたが推測したように使用panToすると、ズームの変更が回避されるため、スパイダーフィケーションを閉じません。

markerClusters.on('spiderfied', function (event) {
  var cluster = event.cluster;

  // Center the map on the clicked cluster if it gets spiderfied.
  map.panTo(cluster.getLatLng());
});

デモ: https://jsfiddle.net/3v7hd2vx/397/

于 2017-09-08T07:23:09.593 に答える