私はカスタムリーフレットコントロールを作成しました。それは、各レイヤーに追加することができる何らかの伝説です。コントロール自体には、マップからポップアップのようなものを削除する閉じるボタンがあります。 コントロールを追加するには、ボタンをクリックします。 私の問題は、ユーザーが同じコントロールをマップに何度か追加することができることです。だから、私はこの特定のコントロールが既にマップに追加されているかどうかをテストし、もしそうなら、それを再度追加しないでください。リーフレットコントロールが既にマップに追加されているかどうかを調べる
は私が
control.addTo(map);
今すぐコントロールが閉じるボタンを持っている想像してクリックし、いくつかのオプション
var control = L.control.customControl(mylayer);
とボタンの私のマップに追加を渡し、それぞれの層のためのコントロールを作成して閉じることができます。今、ユーザーがもう一度ボタンをクリックした場合、私はそれが地図上まだない場合、コントロールを追加したい - このような何か(hasControlは擬似コードである、そのような機能は、私の知る限りではありません)簡単にするために
if(!(map.hasControl(control))) {
control.addTo(map);
}
私が作りましたズームコントロールを作成して2回追加する例here
おかげで、私は '_map'プロパティを使用 - 正常に動作します! – Krxldfx
あなたのボートは何でも浮かべています:)しかし、 '_map'プロパティを使うときには、プロパティの' _'接頭辞は、あなたが通常は使用しないプライベートプロパティであることを暗示しています。今後のバージョンのリーフレットで変更または削除される可能性があります。 2番目の方法では、この問題に遭遇することはありません。私の答えにこれを追加しました。ちょうど完成しました:) – iH8
さて、私はもう2番目のバージョンを詳しく見ました。複数のcustomControlを持っていれば問題になるかもしれませんね。 'var customControl1 = new L.Control.Custom(someOptions);のようなものです。 var customControl2 = new L.Control.Custom(otherOptions); ' - 両方を追加して最初のものを削除すると、' hasCustomControl'はfalseを返します。 – Krxldfx