2017-09-01 10 views
0

リーフレットスタイルのレイヤーコントロール、マーカークラスター、およびマーカークラスターサポートプラグインを使用してレイヤーコントロールでオンまたはオフにするオーバーレイを作成しています。 ページが最初に読み込まれたときにマップを空白にして、ユーザーがオンにするオーバーレイを選択できるようにすることを除いて、すべてが完全に機能しています。私はこれのためのスタイル付きレイヤーコントロールのための組み込みのメソッドを試してみましたが、動作しません。試行錯誤 が、私は問題はこれです考え出した:私はマップにmarkerClusterGroupを追加しない場合、ユーザはレイヤコントロールでそれらをチェックするまでページロード時にマップからクラスタ化されたオーバーレイを非表示にする

var markerClusters = L.markerClusterGroup.layerSupport().addTo(map); 

//monday groups 
var mFood = L.layerGroup().addTo(markerClusters); 
var mDrink = L.layerGroup().addTo(markerClusters); 
var mEntertainment= L.layerGroup().addTo(markerClusters); 

、オーバーレイは表示されません。しかし、これは、マーカーがクラスタ化しないことを意味します。 if..then..ループで問題を解決できるように感じますが、これを作成する方法がわかりません。 たとえば、オーバーレイがチェックされている場合は、markerClustersをマップに追加します。私は心配していますが、これはすべてのオーバーレイがチェックされていることを意味します/ markerClustersが表示され、チェックされたオーバーレイが表示され、必要に応じてクラスタ化されるだけです。

答えて

0

一般に、myOverlay.addTo(map)またはaddTo(group)を使用するとすぐにオーバーレイがマップに表示されます。group自体は既にマップ上にあります。

マップにmarkerClutersレイヤーのサポートを追加しないと、これはわかります。しかし、あなたが説明しているようにオーバーレイに問題があります。

これらの問題を解決するには、レイヤーサポートcheckInメソッドを見てください。後でクラスター化するオーバーレイを「登録」しますが、すぐにクラスターグループに追加することはありません。

したがって、マップにレイヤーサポートグループを追加しますが、マップ上に表示されないようにオーバーレイをチェックインしますが、後でユーザーが選択するとクラスタ化されたように見えます。

+0

ありがとうございました!これは私が見たレイヤーサポートの「チェックイン」メソッドの最良の説明でした。私はそれを前に試してみましたが、間違った場所にチェックインをしなければなりませんでした。出来た! – Ailis

+0

私は "チェックイン"にリストする最初の変数だけがクラスタリングされている問題を抱えています。私はそれが昨日働いていたと思ったが、今日はそうではない。各レイヤーグループを個別にチェックする必要がありますか、何らかの方法でそれらをリストできますか?これは私が今持っている方法です: "markerClusters.checkIn(group1、group2、group3)"カンマを削除するとレンダリングからマップが停止します。 – Ailis

関連する問題