//先来个数组合集,目的是用来保存那些标记点,当然是存在内存里,如果想狠点,就直接跟数据库来连,当然教程里就是存内存 [Bindable] private var currentInfos:ArrayCollection = new ArrayCollection(); [Embed(source="assets/icons/biao.png")] public var biao:Class;
//增加标记,其实就是在某个点(你感觉兴趣的位置),加几个图,或者其他什么东西,我这里是加image private function addMarkers():void{ //我准备加的是IMAGE,所以下面几项是设置。很简单,如果你想来点复杂的,自己搞个组件也可以。 var icon:Image = new Image(); icon.source = biao; icon.toolTip = "那里有美女"; icon.buttonMode = true; icon.useHandCursor = true; //下面是一个MapDisplayObject,干嘛用呢?就是源码设置好的,看名字就知道了,有几个属性 //你仔细看下,其实跟那个中心点差不多,MapDisplayObject的中心点根据的是currentLngLat的X与Y的数据 //而anchor这个属性是因为我的ICON的大小是20*20,别忘了注册点是左上,所以要使图片在中心需要向前各进10. //最后就是把这个标记的数据扔到预先设立好的ArrayCollectioni里。 var mapObject:MapDisplayObject = new MapDisplayObject(); mapObject.lnglat.y = currentLngLat.y; mapObject.lnglat.x = currentLngLat.x; mapObject.displayObj = icon; mapObject.anchor.x = 10; mapObject.anchor.y = 10; currentInfos.addItem(mapObject); renderMarkers(); } //下面就是用来在地图上显示标记的,上面这个是加,然后保存到数组,是抽象,下面是具体实施。 private function renderMarkers():void{ if(currentInfos.length >0){ var map:MapCanvas = mapStack.selectedChild as MapCanvas; map.removeAllObjectsFromMap(); for(var i:int=0;i<currentInfos.length;i++){ var mapObject:MapDisplayObject = currentInfos.getItemAt(i) as MapDisplayObject; map.addObjectToMap(mapObject); } } } //用 removeAllObjectsFromMap命令清空图标,然后currentInfos.removeAll();同时清空数组 private function removeMarkers():void{ var map:MapCanvas = mapStack.selectedChild as MapCanvas; map.removeAllObjectsFromMap(); currentInfos.removeAll(); }