leaflet-control-search を使用してマーカーを検索しています。マーカーはこのような配列に格納されます
var mymarkers = [{"loc": [lat,lng], "name": "a"},{"loc": [lat,lng], "name": "b"}];
この配列をループして、「markersLayer」という layerGroup に配置します。
leaflet-control-search で 1 つのレイヤーグループしか検索できないため、「markersLayer」でマーカーを動的に追加/削除しています。
検索制御はこのように初期化されています
var searchControl = new L.Control.Search({layer: markersLayer, propertyName: "name", circleLocation:true});
「markersLayer」にマーカーを追加し、マーカーを検索すると、このマーカーが丸で囲まれて表示されます。マーカーを削除して「markersLayer」に戻すと、leaflet-control-search は、検索時にマーカーを丸で囲みません。
次に、代わりに見つかったマーカーでポップアップを開くことができるのではないかと考えました。「search_locationfound」というイベントがあります。だから私は試しました:
searchControl.on('search_locationfound', function(e) {
e.marker.openPopup();
});
しかし、何も起こりません。誰かが私を助けてくれることを願っています。