关于supermap api for Flex 中FeaturesLayer的clear方法连续执行167次后报空的问题
来源:互联网 发布:软件评测师是什么 编辑:程序博客网 时间:2024/06/06 08:44
首先来看下报错信息:
TypeError: Error #1009: 无法访问空对象引用的属性或方法。at Hashtable/http://www.supermap.com/iclient/2010/internal::add()[E:\SuperMapiClient60\01_SourceCode\branches\Flex_610_8129_B\iClientFlexLib6R\src\com\supermap\web\mapping\Hashtable.as:56]at com.supermap.web.mapping::FeaturesLayer/addHashTableIDs()[E:\SuperMapiClient60\01_SourceCode\branches\Flex_610_8129_B\iClientFlexLib6R\src\com\supermap\web\mapping\FeaturesLayer.as:683]at com.supermap.web.mapping::FeaturesLayer/collectionAddHandler()[E:\SuperMapiClient60\01_SourceCode\branches\Flex_610_8129_B\iClientFlexLib6R\src\com\supermap\web\mapping\FeaturesLayer.as:594]at com.supermap.web.mapping::FeaturesLayer/collectionChangeHandler()[E:\SuperMapiClient60\01_SourceCode\branches\Flex_610_8129_B\iClientFlexLib6R\src\com\supermap\web\mapping\FeaturesLayer.as:549]at flash.events::EventDispatcher/dispatchEventFunction()at flash.events::EventDispatcher/dispatchEvent()at mx.collections::ListCollectionView/dispatchEvent()[E:\dev\4.x\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1024]at mx.collections::ListCollectionView/addItemsToView()[E:\dev\4.x\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1137]at mx.collections::ListCollectionView/listChangeHandler()[E:\dev\4.x\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1284]at flash.events::EventDispatcher/dispatchEventFunction()at flash.events::EventDispatcher/dispatchEvent()at mx.collections::ArrayList/internalDispatchEvent()[E:\dev\4.x\frameworks\projects\framework\src\mx\collections\ArrayList.as:673]at mx.collections::ArrayList/addItemAt()[E:\dev\4.x\frameworks\projects\framework\src\mx\collections\ArrayList.as:394]at mx.collections::ListCollectionView/addItemAt()[E:\dev\4.x\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:596]at mx.collections::ListCollectionView/addItem()[E:\dev\4.x\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:560]at com.supermap.web.mapping::FeaturesLayer/addFeature()[E:\SuperMapiClient60\01_SourceCode\branches\Flex_610_8129_B\iClientFlexLib6R\src\com\supermap\web\mapping\FeaturesLayer.as:889]at Test/add()[D:\Object\Obj8.6\Flex\Test\src\Test.mxml:61]at Function/Test/protected:application1_creationCompleteHandler/a()[D:\Object\Obj8.6\Flex\Test\src\Test.mxml:42]at flash.utils::Timer/_timerDispatch()at flash.utils::Timer/tick()
测试代码:
<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:ic="http://www.supermap.com/iclient/2010" xmlns:is="http://www.supermap.com/iserverjava/2010" width="100%" height="100%" pageTitle="点样式示例" creationComplete="application1_creationCompleteHandler(event)"><!--点要素样式--><fx:Declarations><!--定义点要素的默认显示样式--><!--样式1--><s:ArrayCollection id="alist"><fx:Object LGTD="113.224" LTTD="22.34" STNM="123" STCD="1"/><fx:Object LGTD="113.234" LTTD="22.34" STNM="123" STCD="1"/><fx:Object LGTD="113.124" LTTD="22.34" STNM="123" STCD="1"/></s:ArrayCollection></fx:Declarations><fx:Script><![CDATA[import com.supermap.web.core.Feature;import com.supermap.web.core.Point2D;import com.supermap.web.core.geometry.GeoPoint;import com.supermap.web.mapping.FeaturesLayer;import mx.controls.Alert;import mx.events.FlexEvent;public var fl:FeaturesLayer=new FeaturesLayer();protected function application1_creationCompleteHandler(event:FlexEvent):void{map.addLayer(fl);var i:int=0;var ti:Timer=new Timer(100);ti.addEventListener(TimerEvent.TIMER,a);function a(e:TimerEvent):void{add(alist);//Alert.show("a");i=i+1;mess.text=i.toString();}ti.start();}private function add(list:ArrayCollection):void{fl.clear();if(list && list.length>0){for(var i:int=0;i<list.length;i++){var p:GeoPoint=new GeoPoint(list[i].LGTD,list[i].LTTD);var f:Feature=new Feature(p);fl.addFeature(f);}}}]]></fx:Script><!--加载地图--><ic:Map id="map" scales="{[3.35e-7,6.7e-7,1.34e-6,2.68e-6,5.36e-6,1.07e-5]}"><is:TiledDynamicRESTLayer url="http://localhost:8090/iserver/services/map-gd22/rest/maps/gd"/></ic:Map><s:Label id="mess"/></s:Application>
理论上来说,上面的代码将永远执行下去不会发生错误,但是当程序执行到167次时,发生报错,而且这个次数随着所添加的点,即alist记录的条数面变化,如果alist.lenght=6,则执行83次后报错,相当诡异!暂时认为是supermap api的问题
- 关于supermap api for Flex 中FeaturesLayer的clear方法连续执行167次后报空的问题
- 关于ArcGIS Server API for Flex 模糊查询的方法
- 关于flex,group中graphics.clear()导致的mouseMove等鼠标响应失效的问题
- 关于FLEX中AS执行顺序的问题
- FLEX当中关于的执行顺序问题
- 面试中回答关于oracle数据库优化的方法clear
- arcgis api for flex 两种鹰眼的实现方法
- 关于for循环的执行效率问题
- 关于for循环的执行效率问题
- 关于cout中连续i++的执行顺序
- 关于在DESTROY方法中执行命令的问题
- 关于Activity中onCreate()方法执行两次的问题
- 关于Clear Quest的配置问题
- Clear Toolkit 框架中增强的 Flex 组件介绍
- java中list的clear()问题
- 在flex中执行一个javascript方法的简单方式
- 异步方法中map、forEach和for循环中带来的异步执行问题
- Parameters的clear方法
- MVC中的匿名变量声明方法
- android:layout_gravity和android:gravity属性的区别
- 数据库问题
- 对字符串数组中的M个字符串按长度由小到大进行排序
- delphi TPersistent类
- 关于supermap api for Flex 中FeaturesLayer的clear方法连续执行167次后报空的问题
- iPhone桌面快捷电话的实现原理
- 《Unix/Linux编程实践教程》读书笔记 ----more01.c所思
- PreferenceActivity
- Linux下find命令详解
- 【动态规划】Loser's Spring
- 如果超链接里使用onclick事件
- vc 中的cfiledialog用法
- 时间类性之间的转换