Javascript 单张单击按钮打开特定标记弹出窗口
我试图在某个事件上打开一个特定标记的弹出窗口,比如,点击按钮。为此,我向标记添加了一个id属性,并将所有标记存储在一个数组中。但由于某些原因,当我试图访问数组时,数组内部标记的id属性是未定义的Javascript 单张单击按钮打开特定标记弹出窗口,javascript,popup,leaflet,Javascript,Popup,Leaflet,我试图在某个事件上打开一个特定标记的弹出窗口,比如,点击按钮。为此,我向标记添加了一个id属性,并将所有标记存储在一个数组中。但由于某些原因,当我试图访问数组时,数组内部标记的id属性是未定义的 var map = L.map('map').setView([51.505, -0.09], 13); var markers = []; var marker = L.marker([51.5, -0.09]); marker["id"]="0"; marker.bindPopup('!'); ma
var map = L.map('map').setView([51.505, -0.09], 13);
var markers = [];
var marker = L.marker([51.5, -0.09]);
marker["id"]="0";
marker.bindPopup('!');
marker.addTo(map);
markers.push(marker);
openPopupById("0");
function openPopupById(id) {
for(var marker in markers) {
alert("Marker's id " + marker["id"] + " target id " + id );
if (marker["id"] === id) {
//marker.openPopup();
alert("opening " + id);
}
}
alert(id);
}
更新
好的,我找到了解决办法:我应该用
和访问标记作为标记[i][id]
但是有人能解释一下为什么第一个版本不起作用吗?我想你的错误是使用了推入式标记。pushmarker 要存储标记,应使用
markers["id"] = marker;
你可以像那样打开弹出窗口
markers["id"].openPopup();
让标记者知道他们的id
marker.id = "id";
也许这会有帮助:是的,如果我不想让marker因为其他原因知道它的id,这可能是一个更好的解决方案。我会考虑的。但是你能告诉我,为什么我问题中的第一个解决方案不起作用吗?使用marker.id而不是marker[id],因为marker不是数组。我已经更新了答案如果是这样,为什么我更新的解决方案有效?我只是不明白他们之间的区别。
marker.id = "id";