leaflet - 传单如何更改标记交互性
问题描述
我可以通过这种方式更改标记的交互性
const position = [x, y];
const map = L.map('map').setView(position, z);
L.tileLayer(url, options).addTo(map);
var marker = L.marker([x, y], { interactive: false }).addTo(map);
const button = document.getElementById("button");
let interactive = false;
button.onclick = () => {
interactive = !interactive;
marker.removeFrom(map);
L.setOptions(marker, { interactive: interactive });
marker.addTo(map);
};
在这里,我必须首先从地图中删除标记,第二次更改选项和第三次再次添加到地图。
有没有办法更改已添加到地图的现有标记的选项,而无需删除它并再次添加它?
解决方案
您可以直接调用对象。
let interactive = false;
button.onclick = () => {
interactive = !interactive;
marker.options.interactive = interactive;
};
或使用setStyle()
,然后标记将被重新渲染:
let interactive = false;
button.onclick = () => {
interactive = !interactive;
marker.setStyle({interactive: interactive});
};
但我建议不要使用全局标志。因为你会成为一个问题,如果你想使用不止一个标记。
我会用这个:
button.onclick = () => {
marker.options.interactive = !marker.options.interactive;
};
推荐阅读
- c - 管道不发送标签
- sql - 在 Node.JS 中使用 SQL 在概念上是错误的吗?
- sql - 数据集转置
- python - 如何在 Tensorflow 中对 RaggedTensor 进行切片
- ruby-on-rails - 如何在 Rails 中根据连接表范围检索关联
- reactjs - 从表中删除值
- pdf - 可以在 jupyter notebook markdown 中指定作者,以便 nbconvert 将其用于 PDF 文章作者吗?
- inno-setup - InnoSetup:文件检查功能有问题
- opengl - 如何将 OpenGL 渲染场景从云端传输到远程客户端
- python - VSCode Python 调试器在未执行的行上执行 - 并在正在执行的行上执行