宣传单:添加指向标记的链接

Iva*_*var 8 javascript maps leaflet

非常简单的问题:如何使Leaflet中的地图标记可单击并将用户路由到另一个页面?每个标记都有自己的页面.

我试过以下但没有成功; 不知何故,所有标记都指向同一页面,这是最后分配的URI.

var markers = [
    { coords: [51.505, -0.09], uri: '/some-page' },
    ...
];

for(x in markers)
{
    L.marker(markers[x].coords).on('click', function() {
        window.location = markers[x].uri;
    }).addTo(map);
}
Run Code Online (Sandbox Code Playgroud)

这个问题真让我疯了.

Iva*_*var 9

好的,我终于找到了解决方案; 当标记添加到地图时,会为其分配一个名为"_leaflet_id"的ID.这可以通过目标对象获取,也可以在添加到地图设置为自定义值.

所以最终的解决方案很简单:

var x = markers.length;

while(x--)
{
    L.marker(markers[x].coords).on('click', function(e) {
        window.location = markers[e.target._leaflet_id].uri;
    }).addTo(map)._leaflet_id = x;
}
Run Code Online (Sandbox Code Playgroud)

(我用反向while循环替换了for-in循环)