2016-09-19 15 views
0

リーフレットを使って簡単なマップ実装を書いていますが、ちょっとしたぶつかりがあります。マップをセットアップしようとしていて、チェックボックスの選択に基づいてラベルを表示するカスタムコントロールを追加しました(ポップアップが表示されます)。リーフレットはマーカにバインドせずに複数のポップアップを開く

私のカスタムコントロールはそうのようなものです:

 var checkBoxControl = L.Control.extend({ 
      options: { 
       position: 'topright' 
      }, 
      onAdd: function (map) { 
       var container = L.DomUtil.create('input', 'leaflet-control'); 

       container.style.backgroundColor = 'white'; 
       container.id = 'labels_checkbox'; 
       container.style.width = '30px'; 
       container.style.height = '30px'; 
       container.label = "Labels"; 
       container.type = 'checkbox'; 

       container.onclick = function() { 
        var checkBox = $("#labels_checkbox"); 
        var checkBoxValue = checkBox[0]; 
        var labelsChecked = checkBoxValue.checked; 
        var bounds = mymap.getBounds(); 

        for (var i = 0; i < markers.length; i++) { 
         marker = markers[i].mark; 

         if (bounds.contains(marker.getLatLng())) { 
          var previewLabel = markers[i].previewLabel; 
          if (labelsChecked == true) { 
           console.log('previewLabel', previewLabel); 
           mymap.addLayer(previewLabel).fire('popupopen'); 
          } else { 
           previewLabel.close(); 
          } 
         } 
        } 

       }; 
       return container; 
      } 
     }); 

私はマップがこれらのマーカーを開けません。しかし、それはすべての周りのマーカーをフェッチしているというのが私のコンソールごとに見ることができますか?

マーカーにバインドせずにポップアップを開く方法はありますか?あなたがポップアップを自動的に閉じるのを防ぐために行動をL.Map変更する必要が

おかげ

答えて

1

hereについて説明します。

// prevent a popup to close when another is open 
    L.Map = L.Map.extend({ 
    openPopup: function (popup, latlng, options) { 
     if (!(popup instanceof L.Popup)) { 
     var content = popup; 

     popup = new L.Popup(options).setContent(content); 
     } 

     if (latlng) { 
     popup.setLatLng(latlng); 
     } 

     if (this.hasLayer(popup)) { 
     return this; 
     } 

     // NOTE THIS LINE : COMMENTING OUT THE CLOSEPOPUP CALL 
     //this.closePopup(); 
     this._popup = popup; 
     return this.addLayer(popup);   
    } 
}); 

そんなにこのexample

+0

感謝を参照してください!それはトリックでした! – liamjnorman

+0

優れています。それがあなたを助けたら答えを受け入れてください。 – YaFred

関連する問題