arcgisviewer for flex 實現as 和 mxml傳遞變數,arcgisviewermxml
一:問題由來
(1)今天遇到了一個問題:首先根據多組經緯度把小表徵圖定位到地圖上,之後點擊小表徵圖顯示各自的資訊,可是總是顯示最後一個經緯度傳過來的資訊,如何擷取PictureMarkerSymbol 的id
(2)現在點擊PictureMarkerSymbol表徵圖,總是顯示最後一個經緯度的資訊,怎麼實現呢?
(3)是不是 var so:SharedObject = SharedObject.getLocal("ccc","/"); SharedObject的問題?(事實上是的)
(4)最開始想通過obj傳遞過去,為空白null代碼圖如下
(5)單機之後的:
(6)這也是一個問題,造成運行灰常的慢。
(7)var so:SharedObject = SharedObject.getLocal("ccc","/"); SharedObject,造成總是獲得最後一個id的資訊。
二:解決問題
(1)功能實現 —— 就是根據一組經緯度實現定位各個小表徵圖在地圖上,之後點擊各個圖表分別顯示各自的資訊。
(2)代碼實現(封裝一下)
import com.esri.ags.Graphic;import com.esri.ags.Map;import spark.modules.Module;// 上面三個都是必須用到的import widgets.zyp.BeiDouWidget2;// 自訂的mxmlimport flash.events.MouseEvent;import flash.external.ExternalInterface;import flash.geom.Point;private var curMap:Map;private var curGraphicsLayer:GraphicsLayer;private var curPopup:Module;// 對應三個的對象//在指定經緯度繪製infosymbol(可以是多個) 正確版本private var htmlContent:widgets.zyp.BeiDouWidget2;[Embed(source="assets/images/satellite.png")]private const pic:Class;public function drawInfoSymbol(lat:Number, lon:Number ,information:String):void {var pictureMarkerSymbol:PictureMarkerSymbol = new PictureMarkerSymbol(pic,40,40);// url,heigth,widthvar pictureMarkerSymbolGraphic:Graphic = new Graphic(new MapPoint(lon,lat),pictureMarkerSymbol);curGraphicsLayer.add(pictureMarkerSymbolGraphic);//添加小紅旗pictureMarkerSymbolGraphic.addEventListener(MouseEvent.CLICK,function(event:MouseEvent):void{// 封裝的點擊事件var bd:BeiDouWidget2 = new BeiDouWidget2();bd.content = information;curMap.infoWindowContent = bd;curMap.infoWindow.show(curMap.toMapFromStage(event.stageX, event.stageY));})}