leaflet - 使用自定义控件在传单地图上绘制不同的对象
问题描述
我想用传单地理人在传单地图上绘制不同类型的对象。我在覆盖窗格上有一个不可编辑的 geojson 图层(农业地块),我想在组合框(或按钮 nethermind)中选择要绘制的对象类型。它可以是标记(例如树木)或折线(树篱...)或多边形(森林...),具有不同的风格(颜色、标记、工具提示...):森林是绿色的,树有一些图标,树篱是棕色的,森林是绿色的填充......在绘图结束后,我想显示一个弹出窗口来填充一些信息,例如对象的名称。我想将所有这些图纸放在一个可以使用窗格控件显示/隐藏的图层中。我可以根据对象的类型有不同的层。至少,我想获取所有绘制的对象(带有额外信息......)并将其保存在 geojson 中。你有做这种事情的例子吗?我仍然没有找到任何东西。谢谢
关恩
解决方案
您可以创建不同的绘图形状以赋予它们不同的颜色:customcontrols.js:
map.pm.Toolbar.copyDrawControl('Rectangle', {
name: 'RectangleCopy',
block: 'custom',
title: 'Display text on hover button',
actions: _actions,
});
map.pm.Draw.RectangleCopy.setPathOptions({ color: 'green' });
然后检查pm:create
侦听器创建了哪个形状,然后向其添加一个弹出窗口:
map.on('pm:create',(e)=>{
if(e.shape === 'RectangleCopy'){
e.layer.bindPopup('Treee').openPopup();
}
});
要将图层添加到 FeatureGroup,您可以使用map.pm.setGlobalOptions({layerGroup: YOUR_GROUP});
并且要获得所有绘制的图层,您可以调用map.pm.getGeomanDrawLayers(true).toGeoJSON()
或者因为您有自己的组:YOUR_GROUP.toGeoJSON()
推荐阅读
- unity3d - Unity 停止角色控制器跳上山
- java - 实现双击图像
- ios - iOS - 具有水平和垂直滚动的视图控制器 uiview
- javascript - 复制到剪贴板中的 webform aspx 中的 JavaScript,其中包含许多空格
- python - SSHTunnelForwarder - “IP 不是字符串 (NoneType)”
- swift - 为什么指向新对象后内存地址相同?
- razor - 用于 IEnumerable 模型的 Table TagHelper(不使用反射)
- android - 在snack.expo上运行包含本机android部件的模块
- bash - (BASH)将循环变量传递给将存储在变量中的命令
- solace - 每个主题订阅是否都意味着一个单独的 TCP 连接?