用户名: 密码: 验证码: QQ--程序群:31736530 动画群:38836599
闪无忧
 
首 页 业界新闻 业界杂谈 Flash教程 Flash源码 Flash图书 Flash酷站 Flex & AIR 供求信息
   本栏目通告:   请大家多多关注[Flex应用案例],更希望大家[推荐好的案例]给我们
当前位置 :首页>Flex-AIR>Flex资料>列表

FLEX地图应用教程之四

[来源:uncool.cn | 作者:uyang | 时间:2008-06-13 | 点击:  | 收藏本文  【 】]

      相信看到这篇的朋友,应该用我前三篇的例子玩过这个地图API了,知道地图显示,切换等。下一步就是很重要的加标记,首先,你需要的是把我第三篇写的代码抄出来,接着就是在以前的SCRIPT代码段里加上我下面写的代码。该解释的我已经在代码里说了。
      我们先要加两个按钮,一个是用来增加标记,一个是用来删减标记。代码为:

<mx:Canvas width="214" height="25" x="181" y="370" backgroundColor="#ff0000" backgroundAlpha=".5">
     <mx:LinkBar dataProvider="mapStack"  />
   </mx:Canvas>
  
  <!-- 这里就是新增加的东东,增加是调用addMarkers(),删除是调用removeMarkers()-->
   <mx:Button label="增加标注" click="addMarkers()" fontSize="12" fontWeight="normal"  y="372" x="8"/>
   <mx:Button label="删除标注" click="removeMarkers()" fontSize="12" fontWeight="normal"  y="372" x="73"/>


    你可以注意到我把以前CANVAS的代码段也贴上来了,为了便于排布组件,否则光贴两个按钮的,到时候跟切换地图的组件重叠了,我好人做到底,一起贴了。
    下面的代码是加在以前SCRIPT代码段里的,别忘了是加上。


import mx.collections.ArrayCollection;
    import mx.controls.Image;
    import com.earthplayer.maps.MapDisplayObject;
    
    //先来个数组合集,目的是用来保存那些标记点,当然是存在内存里,如果想狠点,就直接跟数据库来连,当然教程里就是存内存
    [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();
    }

renderMarkers()这个命令是显示标记的,如果光是在以前的代码上加上上面这段代码,在不放大缩小地图的时候,标记是没问题的,如果你一放大或者缩小,标记就不见了,那么问题是在哪里呢?就是在showMap()这个命令里,你还需要在里面加上renderMarkers(),所以最后的是:
private function showMap():void{
            (mapStack.selectedChild as MapCanvas).setCenter(currentLngLat,zoom.value);
            renderMarkers()
         }

    这样就搞定了。下面就是DEMO

       
  
文章如果有错误或者缺少文件,请发邮件提交给我们
上一篇:FLEX地图应用教程之三
下一篇:【外文教程】如何自定义Flex组件皮肤
Tags:    
>>> 最新评论:(共有 0 位网友发表了评论)      查看所有评论
  发表评论
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
·本站发布内容均为客观表达作者观点,不代表闪无忧立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
  Flex及AIR分类
  Flex资料   Flex动态
  Flex案例   Flex源码
  AIR资讯
  Flex相关
  寻找Flex工作机会
  发布Flex工作机会
  相关文章
·Flex 3处理外部XML的两种方式
·如何自定义Flex的loading画面
·基于Flex的在线图片编辑器
·FLEX 文本高亮类HighlightBlock
·【外文教程】如何自定义Flex组件
·FLEX地图应用教程之四
·FLEX地图应用教程之三
·FLEX地图应用教程之二
·FLEX地图应用教程之一
·分享AIR版的Flash调试工具
  热门文章
·用Adobe Flex 2和Java创建富Internet
·Flex 3 AdvancedDataGrid的使用(第二
·Flex中文官方帮助教程下载
·用Flex 3做AIR版html编辑器
·如何从零开始编写一个flex组件
·FLEX地图应用教程之一
·Flex 入门教程
·Adobe Flex编码指南v1.2(AS3 Flex3程
·2006年Flex大型优秀网站欣赏
·Flex 3 dvancedDataGrid的使用(第一部
·学习Flex几个值得研究的例程代码
关于我们 - 免责声明 - 网站地图 - 商务服务 - 联系我们 - RSS地图
©CopyRight 2006-2008, 5UFlash.COM, Inc. All Rights Reserved
鲁ICP备06034971号