0

我使用 Mapbox 在网站上制作动态地图。它工作得非常好,除了我有一个侧边栏,其中列出了带有更多描述和图像的引脚。我想这样做,所以当我单击该侧边栏时,它会触发地图上该标记的单击事件。

我曾经一直使用谷歌地图这样做,但现在我被卡住了,因为即使我可以保留标记的实例,由于某种原因我无法触发点击它。它根本什么都不做(也许我需要重新绑定点击事件,但我不知道如何使用 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 链接触发 mapbox 标记单击事件或 .openPopup?

感谢,并有一个愉快的一天!

4

1 回答 1

0

MapBox 的标记层是传单标记的集合。您可以创建href一个函数来根据其图层 ID 查找特定标记。

map.markerLayer.getLayers()返回包含 a_leaflet_id和 method的图层对象数组togglePopup

尝试将您的 href 调用与传单 ID 匹配,然后触发map.markerLayer.getLayers()[i].togglePopup()

让我知道这是否有帮助。

于 2013-12-09T18:46:51.740 回答