首页 > 解决方案 > 如何在传单中动态更改 worldCopyJump 值?

问题描述

初始化传单地图,worldCopyJump 为真

var map = L.map('weatherMap', {
  center: [51.505, -0.09],
  zoom: 13,
  worldCopyJump: true
});

之后需要将 worldCopyJump 更改为 false 吗?

标签: javascriptleaflet

解决方案


如果您查看Leaflet 的源代码,您可以看到worldCopyJumpmap 选项仅在第一次启用地图拖动处理程序时被评估一次(注意如何this._draggable缓存并且从不销毁)。

您可以将地图处理程序作为地图属性访问,然后启用和禁用它们worldCopyJump当第一次启用拖动处理程序时(当其内部_draggable属性为假时)评估该选项时,可以执行以下操作:

map.dragging.disable();
delete map.dragging._draggable;
map.options.worldCopyJump = !map.options.worldCopyJump;
map.dragging.enable();

请记住 javascript 不成文的约定,即以下划线 ( ) 开头的属性和方法_应该是受保护的/私有的- 上面的删除_draggable是一个非常丑陋的 hack。

理想情况下,L.Map可以重构可拖动处理程序的代码,以便评估worldCopyJump重新启用拖动处理程序的选项。然而,这方面的用例非常小众,没有人这样做(在撰写本文时)。


推荐阅读