javascript - 居中标记

标签 javascript jquery leaflet

如何实现这一点:

map.on('popupopen', function(centerMarker) {
    var cM = map.project(centerMarker.popup._latlng);
    cM.y -= centerMarker.popup._container.clientHeight/2
    map.setView(map.unproject(cM),16, {animate: true});
});

但在某种程度上取决于单击传单标记(而不是弹出窗口)?

我想要做的是设置我的 map ,以便当单击其上的任何标记时, map 会放大到标记位置的更近的 View 。当我的标记悬停在上方时,它们会显示弹出窗口,因此我无法使用“popupopen”。

我尝试过执行 layer.on('click'.... 但当我这样做时,我收到“无法读取 _latlong undefined 的属性”错误。

最佳答案

您可以使用点击事件传递的latlng。创建一个像这样的函数:

function clickZoom(e) {
     map.setView(e.layer._latlng,16, {animate: true});
}

您可以在创建图层时添加 .on('click', clickZoom) 在点击事件上调用它。

这是一个示例 fiddle ,展示了它的工作原理:

http://jsfiddle.net/nathansnider/zpv3pj02/

请注意,在示例中,您还可以从 onEachFeature 内部调用该函数(而不是在创建图层时),但您需要使用 e.target._latlng 而不是 e.layer._latlng

关于javascript - 居中标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003619/

相关文章:

javascript - 尝试使用双向数据绑定(bind)使用指令中的自定义代码更改 Material md-selected 选项卡

javascript - youtube iframe api在另一个正在播放时停止视频

leaflet - 单张:反向/反向多边形样式

php - 多行自动计算和复选框?如何减少呢?

postgresql - 在传单中使用 pgAdminIII 的内容创建弹出窗口

r - 仅第一个多边形出现在 Leaflet 2.0.1 等值线图中

javascript - 如果 xml 节点中没有值,如何让我的小部件不崩溃?

javascript - Bootstrap 表显示空行

javascript - 网络选项卡中的 Service Worker 混淆

javascript - 如何将 onclick 回调附加到 div 但不附加到 div 内的链接?