调用ArcGIS JS API在前段加载FeatureLayer时灵时不灵,请问是什么原因呢?

我在前端加载了三个featurelayer,有时候能正确的显示在前端,但有时候会出现下图中的错误,提示Unable to draw graphic。请问这是什么原因呢?另外,一个arcgis javascript程序中最好要使用map.on("load",)事件吗?我看官网上很多sample code都有这个事件,但不是很清楚这个事件的意义在哪里?
QQ图片20170303225751.png
已邀请:

goldenlimit - Major in MIS and minor in GIS, graduated from University of Alabama. GIS is not a simply tool but a way of exploring the unknow

赞同来自: 谢军 星空_816

感觉单单从报错的信息来看,好象是读取数据的时候超时了。不知道你这三个featureLayer读取的时候,有没有添加On demand mode的模式,这个模式可以使layer加载的时间相对快一些,因为这种模式下,读取的featureLayer的相关信息只会在地图显示的区域内,而不是一下子去读取所有的数据。
在官方API的文档有这样一个小sample你可以去看看:https://developers.arcgis.com/javascript/3/jssamples/fl_ondemand.html
 
这个是FeatureLayer的API相关文档解释,里面有介绍几个不同的模式:
MODE_AUTO, MODE_ONDEMAND, MODE_SELECTION, MODE_SNAPSHOT
https://developers.arcgis.com/javascript/3/jsapi/featurelayer-amd.html
 
 
你的第二个问题,map.on("load")这个叫做Event Listener,就是一个监听事件
比如下面这个例子,就是当你的map的extent在变化时,这个map.on(
"extent-change") 就会触发这个function:changeHandler
然后你可以去添加一些相关的逻辑去处理这个事件触发后的结果或者分析
var mapExtentChange = map.on("extent-change", changeHandler);

function changeHandler(evt){
var extent = evt.extent,
zoomed = evt.levelChange;
// ... Do something ...

// in some cases, you may want to disconnect the event listener
mapExtentChange.remove();
}

binghuan123 - 80后

赞同来自:

因为新建map对象的时候是没有坐标系的,在第一个图层加载完成后才会有spatialreference,就有很多操作需要等到map.on("load",)之后有坐标系才能做。
有多个图层需要添加的话,最好先添加一个,然后其他的在map.on("load",)事件里面再去添加。

要回复问题请先登录注册