我使用Mapbox在网站上创建动态地图。它工作得非常好,除了,我有一个侧边栏,列出了更多描述和图像的引脚。我想这样做,当我点击侧边栏时,它会在地图上触发该标记的点击事件。
我曾经一直使用谷歌地图这样做,但现在我被卡住了,因为即使在我可以保留标记实例的情况下,我也无法因某些原因点击它。它什么都不做(也许我需要重新绑定它上面的click事件,但我不知道如何使用mapbox)
我在Google和SO上遇到过一些关于此问题的问题,但除了“保留实例”之外,没有一个问题能给出真正的答案,但在某些情况下并不总是这样。
所以基本上我有一个像这样的jQuery点击事件:
var marker = {
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [lng, lat]
},
properties: {}
};
if (isPin) {
marker.properties = pinStyles.pin;
} else if (isWinery) {
marker.properties = pinStyles.winery;
} else {
marker.properties = pinStyles.user;
}
marker.properties.title = locationName;
marker.properties.description = pin.description;
var markerObject = L.mapbox.markerLayer(marker);
// Add to cluster
markers.addLayer(markerObject);
$('#marker_list a.marker_item:last').click(function() {
var geoJson = markerObject.getGeoJSON();
markerObject.fire('click'); // does nothing (openPopup makes "Uncaught TypeError: Object [object Object] has no method 'openPopup' " so I guess I'm not doing it right)
});
我有这个(mapbox标记的点击事件):
map.markerLayer.on('click', function(e) {
map.setView(e.layer.getLatLng(), map.getZoom());
});
任何人都知道有关1)修复非射击事件或2)使HTML链接触发地图框标记点击事件或.openPopup?
谢谢,祝你有愉快的一天!
答案 0 :(得分:0)
MapBox的标记图层是Leaflet标记的集合。您可以为一个函数创建一个href
,根据它的图层ID查找特定标记。
map.markerLayer.getLayers()
返回包含_leaflet_id
和方法togglePopup
的图层对象数组。
尝试将您的href调用与传单ID匹配,然后触发map.markerLayer.getLayers()[i].togglePopup()
如果有帮助,请告诉我。