Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 定心标记_Javascript_Jquery_Leaflet - Fatal编程技术网

Javascript 定心标记

Javascript 定心标记,javascript,jquery,leaflet,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.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});
});
但在某种程度上取决于正在单击的传单标记(而不是弹出窗口)

我试图做的是设置我的地图,这样当点击地图上的任何标记时,地图会放大到标记位置的更近视图。当我的标记悬停在上方时,它们会显示其弹出窗口,因此我不能使用“popupopen”


我尝试过在('click'…上执行层。但当我执行此操作时,会出现“无法读取未定义的_latlongUndefined属性”错误。

您可以使用click事件传递的latlng。创建如下函数:

function clickZoom(e) {
     map.setView(e.layer._latlng,16, {animate: true});
}
创建图层时,您可以通过添加
。on('click',clickZoom)
在单击事件中调用它

下面是一个小提琴示例,展示了它的工作原理:


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

不起作用的代码并不能很好地替代对该代码预期功能的解释。请定义正确的问题陈述和预期结果谢谢您,@nathansnider!这正是我的代码所需要的。一切都很好按我希望的方式工作。:)