首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用自定义控件在小叶地图上绘制不同的对象

使用自定义控件在小叶地图上绘制不同的对象
EN

Stack Overflow用户
提问于 2021-11-13 09:40:52
回答 1查看 180关注 0票数 0

我想用leaflet-geoman在传单地图上绘制不同类型的对象。我在overlay面板上有一个不可编辑的geojson层(农业宗地),我想在组合框(或按钮)中选择要绘制的对象类型。它可以是标记(例如树)或多段线(树篱...)或者polygone (森林...)有不同的风格(颜色,标记,工具提示...):森林是绿色的,树有一些图标,树篱是棕色的,森林是绿色填充的……就在绘图结束后,我想显示一个弹出窗口,以填充一些信息,例如对象的名称。我想把所有这些绘图放在一个可以用窗格控件显示/隐藏的层中。根据对象的类型,我可以有不同的层。至少,我希望获得所有绘制的对象(带有额外的信息...)并将其保存在geojson中。你有这样做的例子吗?我还是什么都没找到。感谢‘s

Guen

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-13 10:33:26

您可以创建不同的绘制形状来为它们提供不同的颜色:customcontrols.js

代码语言:javascript
复制
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侦听器,然后向其添加一个弹出窗口:

代码语言:javascript
复制
map.on('pm:create',(e)=>{
  if(e.shape === 'RectangleCopy'){
     e.layer.bindPopup('Treee').openPopup();
  }
});

可以使用map.pm.setGlobalOptions({layerGroup: YOUR_GROUP});将图层添加到FeatureGroup

要获得所有绘制的图层,您可以调用map.pm.getGeomanDrawLayers(true).toGeoJSON(),或者因为您有自己的组:YOUR_GROUP.toGeoJSON()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69953106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档