Javascript 通过选项值查找标记
假设您有一个带有一组自定义标记的传单地图,每个标记都有一个唯一的id值:Javascript 通过选项值查找标记,javascript,leaflet,Javascript,Leaflet,假设您有一个带有一组自定义标记的传单地图,每个标记都有一个唯一的id值: var marker = new L.marker(latlong, {id: id, icon: icon}).addTo(map); 访问标记的推荐方法是什么?具体来说,我想通过标记的“id”值修改标记的类?迭代所有地图的图层,检查它是否是标记,并比较id: L.Map.include({ getMarkerById: function (id) { var marker = null;
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:
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作为键,而不是循环遍历所有标记,例如:
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
我建议保留一组标记,使用它们的ID作为键,而不是循环遍历所有标记,例如:
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
我认为再写一篇短文就是废话。用你已经拥有的东西工作。但我明白你的意思。有点取决于用例tho。当然,我们不知道OP程序的架构。但我不认为这是另一条记录,这是这里唯一的记录。我认为保留另一条记录是废话。用你已经拥有的东西工作。但我明白你的意思。有点取决于用例tho。当然,我们不知道OP程序的架构。但我不认为这是另一条格言,如果layer.options.uniqueID===id对我有效,而不是headif layer.options.uniqueID===id对我有效,则说明:您可以/应该可能在最新版本的传单中对此进行了修改使用uniqueID代替