javascript - 如何在传单中动态更改 worldCopyJump 值?
问题描述
初始化传单地图,worldCopyJump 为真
var map = L.map('weatherMap', {
center: [51.505, -0.09],
zoom: 13,
worldCopyJump: true
});
之后需要将 worldCopyJump 更改为 false 吗?
解决方案
如果您查看Leaflet 的源代码,您可以看到worldCopyJump
map 选项仅在第一次启用地图拖动处理程序时被评估一次(注意如何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
重新启用拖动处理程序的选项。然而,这方面的用例非常小众,没有人这样做(在撰写本文时)。
推荐阅读
- git - npm-debug.log 在 .gitignore 文件中,但我仍然收到消息“没有添加到提交但存在未跟踪的文件(使用“git add”来跟踪)”
- lotus-notes - 如果在 Web 中不想要查看,则隐藏按钮 - Lotus Notes
- asynchronous - 如何从使用 Futures/async/await 的流中正确生成?
- android - 如何使用数据绑定和导航组件访问嵌套视图?
- php - 什么功能验证优惠券字段中的条目?(WooCommerce)
- scala - 在 Ubuntu 18.04 上找不到命令“scala”
- php - 表“catalog_product_super_link”和“catalog_product_relation”显示错误的父子记录
- angular - 处理响应数据而不是 Json,Angular 6
- python - 无法修复错误:create() 采用 1 个位置参数,但给出了 2 个并且似乎无法修复它
- .net - 如何将 pdf 转换为 iTextSharp.Text.Image?