首页 > 代码库 > arcgisviewer for flex 实现as 和 mxml传递变量

arcgisviewer for flex 实现as 和 mxml传递变量

一:问题由来

(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));
			})
			
		}




arcgisviewer for flex 实现as 和 mxml传递变量