【发布时间】:2018-05-21 16:30:04
【问题描述】:
我在地图上有一堆传单标记。每个标记都保存在数组markers 中。标记是动态创建的(在 ajax 调用期间)。
var markers = [];
.
.
var marker = L.marker([mar.lat, mar.lng], {
// ...build the marker...
}
marker._leaflet_id = mar.id; // give the marker an id corresponding to the id of its corresponding div
var myHoverIcon = L.icon({
iconUrl: mar.imgUrl,
iconSize: [40, 40],
popupAnchor: [0, 0]
});
marker.on('click', function(e) {
alert('Marker clicked!');
marker.setIcon(myHoverIcon);
});
.
.
markers.push(marker);
每个标记都有一个对应于特定 div 的 id(存储在 div 上的data-mess_id 中)。计划是在点击提要中相应的 div 时更改标记的图标。
$('#feed').on('mouseover', '.message', function() {
var cssid = $(this).attr('data-mess_id').toString();
var baz = $.grep(markers, function(m) {
return (m._leaflet_id == cssid);
});
baz[0].trigger('click'); // doesn't work
alert(baz[0].getLatLng()); // does work
// this also does not work:
var myHoverIcon = L.icon({
iconUrl: baz[0].imgUrl,
iconSize: [40, 40],
popupAnchor: [0, 0]
});
baz[0].setIcon(myHoverIcon);
});
除了最后一点,一切都很好。我只是无法在标记上触发点击事件。我肯定有正确的标记,因为baz[0].getLatLng() 正在工作。但是baz[0].trigger('click') 不起作用。
我尝试动态创建一个新图标 (myHoverIcon),但它不起作用。
如何在标记上触发点击事件?
还有其他方法可以更改标记图标吗?
【问题讨论】:
-
你能create a MCVE吗?
标签: javascript jquery leaflet