居中标记

时间:2015-10-07 22:41:00

标签: 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});
});

但是某种方式取决于单击的Leaflet标记(不是弹出窗口)?

我要做的是设置我的地图,以便当点击任何标记时,地图会放大到标记位置的更近距离视图。当我的标记悬停在上面时,它们会显示弹出窗口,因此我无法使用'popupopen'。

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

1 个答案:

答案 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