Esri Maps PopupTemplate的内容方法每个功能只调用一次

时间:2018-05-18 15:43:12

标签: typescript esri arcgis-js-api esri-maps esri-javascript-api

我在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子图层。

1 个答案:

答案 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()