我在Angular应用程序中使用Esri地图,我将弹出窗口渲染为Angular组件,并使用PopupTemplate
的{{1}}方法发布数据:
content
这种方法效果很好,除非在给定点有多个要素。当用户循环浏览功能时,如果他/她返回到已显示的功能,则内容方法不会执行,因此不会发布弹出数据。
我可以在layer.popupTemplate = new PopupTemplate({
content: (feature: { graphic: __esri.Graphic }) => {
this.publishPopupData(layer, feature.graphic.attributes);
return popupComponent.viewContainerRef.element.nativeElement;
},
// other properties...
});
的弹出窗口中访问当前选定的功能,但我需要知道该功能来自哪个层才能正确发布数据(每个层都有处理ArcGIS数据的独特要求进入弹出窗口使用的模型。)
MapView
名义上,mapView.popup.watch('selectedFeature', (graphic: __esri.Graphic) => {
const layer = ???;
this.publishPopupData(layer, graphic.attributes);
});
应包含图层引用,但在我的情况下,它始终为graphic.layer
。
有没有办法强制弹出窗口始终调用content方法,即使它已经针对给定的功能执行了?或者,是否有办法从null
(或其他我未考虑过的东西)中获取属性所属的图层?
如果重要,弹出窗口适用于MapView.popup
子图层。
答案 0 :(得分:0)
返回到已显示的功能弹出窗口时,通常不会再次调用("a", "foo") //because of the 'LIMIT 1 OFFSET 0'
childCount = 3 //because there is 3 columns 'WHERE `col2` = "foo"'
函数。我认为问题在于,每次调用content
函数时都会覆盖popupComponent
变量。相反,content
应该返回将添加到新html元素中的内容。
我将提供一个JavaScript答案,因为我不太了解打字稿:
this.publishPopupData()