のは、カスタムマーカーのセットと、リーフレットマップを持っており、各マーカーは一意のID値を持っているとしましょう:オプション値によってマーカーを見つける
var marker = new L.marker(latlong, {id: id, icon: icon}).addTo(map);
マーカーにアクセスするための推奨方法は、(何具体的には、マーカーのクラスを変更したい)、その 'id'値によって
のは、カスタムマーカーのセットと、リーフレットマップを持っており、各マーカーは一意のID値を持っているとしましょう:オプション値によってマーカーを見つける
var marker = new L.marker(latlong, {id: id, icon: icon}).addTo(map);
マーカーにアクセスするための推奨方法は、(何具体的には、マーカーのクラスを変更したい)、その 'id'値によって
反復すべてのマップの層、それはマーカーだかどうかを確認し、IDの比較:その代わり、すべてのマーカーをループの
L.Map.include({
getMarkerById: function (id) {
var marker = null;
this.eachLayer(function (layer) {
if (layer instanceof L.Marker) {
if (layer.options.id === id) {
marker = layer;
}
}
});
return marker;
}
});
var map = new L.Map(...);
var marker = new L.Marker(..., {id: 1});
map.getMarkerById(1); // returns marker instance
map.getMarkerById(2); // returns null
を、私はキーとしてそのIDを使用して、マーカーのdictionaryを維持することをお勧めしたいです例えば:
var markers = {};
markers[id] = new L.marker(latlong, {id: id, icon: icon}).addTo(map);
その後、あなたは、単にmarker[id]
を参照してください。
より複雑な例:
var markers = {};
var data = [ ['alpha', 0, -80],
['beta', 20, 35],
['delta', -70, 44],
];
data.forEach(function(item){
var id = item[0];
var latLng = L.latLng(item[1], item[2]);
markers[id] = new L.marker(latLng, {id: id, icon: icon}).addTo(map);
});
console.log(markers['delta']); // returns the marker at -70, 44
私は別の辞書を維持することはBSだと思います。あなたがすでに持っているものと協力してください。しかし、私はあなたのドリフトをキャッチします。キンダーはユースケースに依存します。 – iH8
もちろん、我々はOPのプログラムのアーキテクチャを知らない。しかし、私はこれが別の* dictだとは思わない、ここで唯一のdictです。 – IvanSanchez