编辑器小部件和拾取当前选择没有另一个地图单击

1134
5
跳到解决方案
06-24-2021 03:43 PM
Sam-Berg_VHB
通过
新贡献者III

你好!谢谢你的建议。当前编辑小部件打开时总是显示“选择一个功能来编辑它”,即使绑定映射有当前选择。在编辑器显示所选特征的属性之前,用户必须再次单击地图以再次选择相同的特征。有人知道这是否是当前的限制,是否有解决办法吗?我在开发人员环境中有这个小部件的自定义版本,因此可以插入自定义逻辑。

谢谢你!

山姆

0荣誉
1解决方案

接受的解决方案
Sam-Berg_VHB
通过
新贡献者III

我现在正在工作的是一个自定义编辑器小部件,具有两个JimuMapViewComponent和DataSourceComponent。编辑器小部件配置为在ActiveViewChanged中读取已配置的层,并将该层保存为状态。然后在DataRender上,我得到了建议的选择@AdrianAkbariNet4s而且@ShawnGoulet并用于创建带有层引用的特性,并将其传递给startUpdateWorkflowAtEdit。

如果这一点。state && this.state.currentWidget && ds.getSelectedRecords().length==1){let g=new Graphic();g.attributes = ds.getSelectedRecords () [0] .getData ();g.layer = this.state.currentEditLayer;this.state.currentWidget.startUpdateWorkflowAtFeatureEdit (g);}

这似乎有我正在寻找的行为,保持编辑器与功能选择的变化同步。谢谢你很多。山姆

在原帖子中查看解决方案

5回复
jcarlson
通过 MVP荣誉贡献者
MVP荣誉贡献者

在一个有编辑小部件的应用程序中,弹出窗口本身就有这些小部件的链接,如果点击这些小部件,打开小部件时给定的功能已经激活。

也许您可以看看这里发生了什么,看看是否有一些代码可以重新使用?

jcarlson_0 - 1624588077011. - png

——乔什·卡尔森
肯德尔县GIS
0荣誉
Sam-Berg_VHB
通过
新贡献者III

谢谢你!@jcarlson感谢你的建议。如果我能得到选定的功能,我会尝试在编辑器上启动tupdateworkflowatfeatureselection。不太确定在框架中如何接近它,或者它是否会起作用,但我很欣赏这个想法。

0荣誉
ShawnGoulet
通过 Esri贡献者
Esri贡献者

嗨,山姆,

一种方法是使用弹出式selectedFeature(图形)。我们有一个异步函数,它(1)检查是否有一个选定的特性&(2)如果有一个选定的特性,处理编辑工作流程,如下所示:

/** @jsx jsx */ //编辑函数async editSelectedFeature() {const jmv = this.state.jimuMapView;if (jmv.view.popup.selectedFeature) {this.state.currentWidget.startUpdateWorkflowAtFeatureEdit(jmv.view.popup.selectedFeature);} else{警报('请先选择一个特征。');}} //按钮在我们的html  . editselectedfeature ()}}>


欢呼,

肖恩

Sam-Berg_VHB
通过
新贡献者III

@ShawnGoulet谢谢你的建议。我试了一下,但没有成功。你能告诉我是否有一种方法可以在没有弹出引用的情况下从地图的目标层获得所选的地图功能吗?我们正在从相关列表中选择地图功能,并没有启动弹出窗口-因此没有对弹出窗口的引用。在任何情况下,编辑器都是在该页上创建的,直到再次单击映射。理想情况下,Edit feature命令可以简单地识别映射中所选的特性,或者当小部件初始化时,可以告诉编辑器直接显示该特性的编辑表单。你认为这能做到吗?谢谢你!

sam_berg_0 - 1624665065633. - png

sam_berg_1 - 1624665316203. - png

非常感谢你的帮助。

山姆

0荣誉
Sam-Berg_VHB
通过
新贡献者III

我现在正在工作的是一个自定义编辑器小部件,具有两个JimuMapViewComponent和DataSourceComponent。编辑器小部件配置为在ActiveViewChanged中读取已配置的层,并将该层保存为状态。然后在DataRender上,我得到了建议的选择@AdrianAkbariNet4s而且@ShawnGoulet并用于创建带有层引用的特性,并将其传递给startUpdateWorkflowAtEdit。

如果这一点。state && this.state.currentWidget && ds.getSelectedRecords().length==1){let g=new Graphic();g.attributes = ds.getSelectedRecords () [0] .getData ();g.layer = this.state.currentEditLayer;this.state.currentWidget.startUpdateWorkflowAtFeatureEdit (g);}

这似乎有我正在寻找的行为,保持编辑器与功能选择的变化同步。谢谢你很多。山姆