一:问题由来
(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;// 自定义的mxml import 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,width var 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)); }) }
时间: 2024-10-12 13:29:06