如何在Leaflet.draw中编辑弹出窗口
How to edit a popup in Leaflet.draw
我使用的是传单和传单。绘制以创建地图。当我(作为用户)在地图上绘制一个矩形时,下面的代码将写出矩形的LatLng边界。
// add the newly drawn items to a layer
map.on('draw:created', function (e) {
var type = e.layerType,
layer = e.layer;
// binds things upon creation
if (type === 'rectangle') {
var bounds = layer.getBounds();
layer.bindPopup(bounds.getNorthWest().toString() + "NW" + bounds.getSouthEast().toString() + "SE");
}
drawnItems.addLayer(layer);
});
我想在用户编辑矩形时更新这个。我认为这样的东西应该使用'draw:edited'事件和'_popup来更新。SetContent',但LatLng中没有更新。
// update LatLng when edited
map.on('draw:edited', function (e) {
var type = e.layerType,
layer = e.layer;
// update popup
if (type === 'rectangle') {
var bounds = layer.getBounds();
layer._popup.SetContent(bounds.getNorthWest().toString() + "NW" + bounds.getSouthEast().toString() + "SE");
}
});
添加第二个代码块也意味着我只能编辑第一个已创建的矩形。所以它显然不能工作,但我不知道为什么。
我明白了。对于draw:edited事件,我需要使用eachLayer方法迭代e.layers
中的每个层,然后使用instanceof
来检查层类型。我还绑定了一个新的弹出窗口,而不是编辑旧的弹出窗口。
下面是代码,在弹出窗口中也有一个换行符,使其更易于阅读:
// update LatLng value
map.on('draw:edited', function (e) {
var layers = e.layers;
layers.eachLayer(function (layer) {
// do whatever you want to each layer, here update LatLng
if (layer instanceof L.Rectangle) {
var bounds = layer.getBounds();
layer.bindPopup(bounds.getNorthWest().toString() + " NW<br>" + bounds.getSouthEast().toString() + " SE");
}
});
});
感谢这个关于检索编辑层类型的问题,为我指明了正确的方向。
相关文章:
- 编辑弹出窗口的HTML的单击命令
- JavaScript窗口.位置不;我不在内容编辑器Web部件中工作
- SVG编辑链接获胜't在新窗口中打开
- 无法根据用户在编辑窗口中的输入显示/隐藏jtable jquery字段
- 点击剑道网格的编辑,在剑道窗口中填充文本框/DDL
- 用于编辑输入字段的弹出窗口
- 如何防止剑道网格弹出编辑器窗口打开
- 销毁Ace编辑器中打开的自动完成弹出窗口
- 代码编辑器响应窗口
- 使用弹出窗口中的文本框编辑 Yaxis 值
- 如何在 Tinnymce 编辑器的插入链接弹出窗口中添加 rel 属性
- Ace 编辑器:未捕获的引用错误:窗口未定义
- TinyMCE:如何手动显示添加/编辑链接窗口
- Rally sdk 2实用程序用于创建指向详细信息页面/编辑弹出窗口的链接
- 带有可编辑弹出窗口的自定义剑道网格顺序
- 在网格弹出编辑器中上传剑道:如何防止上传抛出异常时窗口关闭
- 如何使用 JavaScript 实现自动化登录到脚本编辑器中的消息窗口
- 使用 Plone 添加/编辑弹出窗口
- jqGrid:需要使字段在编辑窗口中不可编辑,在添加窗口中可编辑
- 剑道网格-如何用JavaScript打开弹出式编辑窗口