javascript - 如何将参数传递给 Leaflet 事件监听器?

标签 javascript leaflet

我正在尝试编写此函数,以便单击在 Google map 中创建的新项目时应该对指定的 latlng 运行 panTo()。我不知道 addListener 是否无法向回调函数发送参数。

function createLinkToMarker(title, latlng, container) {
    var a = L.DomUtil.create('a', 'link-marker', container);
        a.href='#',
        a.innerHTML = title;

    function pan() {//??? why I passing argument(latlng) for each new A element?
        console.log(arguments);
        map.panTo(latlng);
    }
    L.DomEvent
        .addListener(a, 'click', L.DomEvent.stopPropagation)
        .addListener(a, 'click', L.DomEvent.preventDefault)
        .addListener(a, 'click', pan);
    return a;
}

最佳答案

您可能应该将 latlng 值添加到 DOM 元素并在监听器中检索它。如果您使用的是 HTML5,则可以存储带有前缀“data”的项目,这样您就可以将元素中的纬度存储为“data-lat”,将经度存储为“data-lon”,即:

a.setAttribute( "data-lat", latlng.lat );
a.setAttribute( "data-lon", latlng.lng );

然后在你的监听器中:

var lat = this.getAttribute( "data-lat" );
var lon = this.getAttribute( "data-lon" );
map.panTo( new L.LatLng( lat, lon ) );

希望这有帮助!

关于javascript - 如何将参数传递给 Leaflet 事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11823367/

相关文章:

javascript - 传单工具提示不会正确动画

javascript - 未捕获 您必须使用 Parse.initialize 指定一个 key

javascript - 如何使用可能值列表过滤选项列表

javascript - 使用 select by id 在特定传单弹出窗口中创建图形

javascript - 如何从 L.Routing.control 获取距离和时间?

javascript - 将鼠标悬停在被另一个元素的填充覆盖的元素上

javascript - 语义 ui 模态内的传单 map

javascript - 阻止用户输入大于 3 位小数的 float

javascript - 如何通过 Google CAJA 传递库?

javascript - 在 ReactJS 项目中为 Appcues 设置识别用户