ArcGIS JavaScript api Map update-end 停止触发

Posted

技术标签:

【中文标题】ArcGIS JavaScript api Map update-end 停止触发【英文标题】:ArcGIS JavaScript api Map update-end stops firing 【发布时间】:2015-11-11 16:56:48 【问题描述】:

我们有一个使用 arcgis javascript api 的复杂网络地图应用程序。以下代码用于通知 ui 地图图层已加载:

on(map,"update-end",function()
    //emit event to ui module
);

map.addLayers(layers);

应用程序经常添加和删除地图图层。然而,偶尔会出现问题,尽管添加了层,但更新结束事件不会被触发,尽管层完成了加载。发生这种情况后,除非应用重新加载,否则事件不会再次触发。

有谁知道在什么情况下会发生这种情况?我们如何预防这个问题?

【问题讨论】:

【参考方案1】:

我通常将我的map.on("update-end", endUpdateMap); 句子放在任何 map.addlayer() 之后,在您定义图层的同一 javascript 中。对我来说效果很好。

map.on("update-end", endUpdateMap);

function endUpdateMap(error) 
         esri.hide(loading);
         map.enableMapNavigation();
         map.disableDoubleClickZoom();
         map.showZoomSlider();
 

【讨论】:

【参考方案2】:

我遇到了这个问题,我认为 JSAPI 中实际上存在错误。如果您在更新时删除层,那么它实际上会破坏“更新开始”和“更新结束”事件,它们会完全停止触发。我会尝试在某个时候将测试用例放在一起,但我发现使用缓慢的绘图层(例如图像服务)时,问题非常普遍。

无论如何,我必须想办法解决它,这就是我想出的:

this.layer.setVisibility(false); // set invisible first to ensure spinner stop
this.map.removeLayer(this.layer);

【讨论】:

以上是关于ArcGIS JavaScript api Map update-end 停止触发的主要内容,如果未能解决你的问题,请参考以下文章

ArcGIS api for javascript—测量,测距问题

arcgis for javascript 中 如何限制地图无限缩小 ,我写map.setMinResolution() 报错

使用arcgis javascript api 开发前台应用如何导入本地地图

ArcGIS API for JavaScript 4.2学习笔记[9] 同一种视图不同数据(Map)同步

arcgis API for javascript 学习笔记

ArcGIS api for javascript——地图配置-