0

我正在使用react-leafletGeoman 插件,我注意到pm:create当我以编程方式添加新图层时它不会触发。此代码在启动时运行,并在任何activeFeatureGroup更改时再次运行:

map.pm.setGlobalOptions({
  ...map.pm.getGlobalOptions(),
  layerGroup: activeFeatureGroup,
  hintlineStyle: { color },
  templineStyle: { color },
})

这是我以编程方式从 GeoJSON 添加新图层的功能:

const opts = { style: { color } }
geoJSON(newGeoJsonObject, opts).addTo(activeFeatureGroup)

此代码运行后如何pm:create触发?主要问题是我正在向pm:create看到的每个图层添加事件侦听器,因此另一种解决方案是在地图实例上设置一个侦听器,该侦听器在 Geoman 中添加图层时触发,但我看不到支持在 Geoman 文档中对此进行了说明。

4

1 回答 1

0

这段代码运行后如何让 pm:create 触发?

您可以通过 3 种不同的方式实现此目的:

  1. 创建一个函数并在运行 geoJson 部分并在pm:create侦听器中调用它
  2. 在地图上添加一个侦听器layeradd(传单事件)并运行与中相同的代码pm:create
  3. pm:create你可以手动触发map.fire('pm:create',{layer: XYZ});(我不推荐这个!)

替代解决方案是一种在地图实例上设置一个侦听器的方法,该侦听器在 Geoman 中添加图层时触发

这是pm:create......如果您的意思是为每个初始化并添加到 Geoman 的图层触发一个事件,您可以通过侦听layeradd然后检查 Geoman 属性是否layer.pm存在来实现这一点。

于 2021-11-16T08:01:48.213 回答