如何实现这一点:
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/