如何才能实现这一目标:
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});
});
但是某种方式取决于单击的Leaflet标记(不是弹出窗口)?
我要做的是设置我的地图,以便当点击任何标记时,地图会放大到标记位置的更近距离视图。当我的标记悬停在上面时,它们会显示弹出窗口,因此我无法使用'popupopen'。
我尝试过layer.on('click'....
,但是当我这样做时,我得到一个“无法读取_latlong undefined的属性”错误。
答案 0 :(得分:1)
您可以使用click事件传递的latlng。创建一个这样的函数:
function clickZoom(e) {
map.setView(e.layer._latlng,16, {animate: true});
}
您可以在创建图层时添加.on('click', clickZoom)
,在点击事件中调用它。
这是一个示例小提琴,显示它在工作:
http://jsfiddle.net/nathansnider/zpv3pj02/
请注意,在示例中,您还可以在onEachFeature中调用该函数(而不是在创建图层时),但您需要使用e.target._latlng
而不是e.layer._latlng
。