一:问题由来
(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));
- })
- }
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));
})
}