HTML链接到Leaflet / Mapbox标记

时间:2013-05-29 02:22:23

标签: javascript jquery leaflet mapbox

我使用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?

谢谢,祝你有愉快的一天!

1 个答案:

答案 0 :(得分:0)

MapBox的标记图层是Leaflet标记的集合。您可以为一个函数创建一个href,根据它的图层ID查找特定标记。

map.markerLayer.getLayers()返回包含_leaflet_id和方法togglePopup的图层对象数组。

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

如果有帮助,请告诉我。