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

FLEX地图应用教程之三

[来源:uncool.cn | 作者:uyang | 时间:2008-06-13 | 点击:  | 收藏本文  【 】]
继续昨天的教程,不过这里要更正下,今天的方法会跟昨天有所不同,今天将引入MapCanvas.因为在切换地图的时候我用昨天的方法,同时放置三个,就会出现问题.为什么呢?因为每种地图的图片大小是不同,坐标点也许一样,由于图片不一致,可能造成误差.回到正题,在开始之前,我们温习下ViewStackLinkBar合起来的用法.很简单,先上DEMO,然后再看代码.
  
       
  
     代码:



<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
    width="200" height="200">
    <mx:Script>
      <![CDATA[
         private function showMap():void{
             look.text = stack.selectedChild.id+ "切换了"
          }
      ]]>
    </mx:Script>
    
   <mx:ViewStack valueCommit="showMap()" id="stack" width="100%" height="100%">
     <mx:Canvas label="第一个"  id="no1" backgroundColor="#ff0000" width="100%" height="100%"/>          
     <mx:Canvas label="第二个" id="no2" backgroundColor="#00ff00" width="100%" height="100%"/>
   </mx:ViewStack>
   <mx:LinkBar dataProvider="stack"/>
   <mx:Label x="29" y="98" id="look" width="127" height="21"/>
</mx:Application>


   分析:valueCommit是ViewStack的一个方法,意思就是在ViewStack切换的时候就执行.那么我们下面在地图切换的时候就能用到了,比如一开始我们把3个地图都放在ViewStack下,只要切换,就显示该地图,唯一需要注意的是,各自的地图中心点,及放大倍数,这个需要能同步.继续地图教程.以下是完成DEMO
  
       
  
代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="400"
  xmlns:maps="com.earthplayer.maps.*"
   creationComplete="init()"  backgroundGradientColors="[#ffffff, #ffffff]" layout="absolute">
  
    <mx:Script>
      <![CDATA[
        import com.earthplayer.maps.MapCanvas;
      
          import com.earthplayer.maps.MapUpdateCenterEvent;
          import com.earthplayer.maps.MapController;
          
           private var currentLngLat:Point = new Point(116.37819,39.92374);
          
        public function init():void{
          showMap();
          //可以注意到我没有再在地图上搞一个CANVAS来监听鼠标事件,而是在ViewStack监听UPDATECENTER
          //这跟我第一部分差不多
          mapStack.addEventListener(MapUpdateCenterEvent.UPDATECENTER,updateCenter)
        }
        
        private function updateCenter(event:MapUpdateCenterEvent):void{
          //然后当鼠标有移动后,Point不断的更新内部变量
          currentLngLat.x = event.lng;
          currentLngLat.y = event.lat;
        }

         private function changZoom(adjest:int):void{
           //这里重新做了下,更加的简洁
            var z:int = zoom.value += adjest;
               if(z>17){
                 z = 17;
               }else if(z<5){
                 z=5
               }
              zoom.value = z;
             showMap();        
         }
              
            
           private function showMap():void{
             //这里重点来了,MapCanvas重新出台,其实MapCanvas就是MAP的地图容器
             (mapStack.selectedChild as MapCanvas).setCenter(currentLngLat,zoom.value);
          }
      ]]>
    </mx:Script>
   <!-- 下面的框架就简单了 -->
    <mx:ViewStack valueCommit="showMap()" id="mapStack" width="100%" height="100%" visible="true" x="0" y="0">
      <maps:MapLive label="LIVE地图" width="100%" height="100%" visible="true" x="0" y="0"/>
      <maps:Map51ditu label="51地图" width="100%" height="100%"  visible="false" x="0" y="0"/>
      <maps:MapGoogle label="Google地图" width="100%" height="100%"  visible="false" x="0" y="0"/>  
    </mx:ViewStack>
    
    <mx:Button id="zoomBig" label="+" click="changZoom(1)" y="13" width="20" height="20" left="10" toolTip="放大"/>
  
    <mx:VSlider x="9" y="42" snapInterval="1"
         liveDragging="true" change="showMap()" tickInterval="1" id="zoom"  minimum="5" maximum="17" value="5" height="100"/>
    <mx:Button id="zoomSmall" label="-" click="changZoom(-1)" width="20" height="20" y="148" left="10" toolTip="缩小"/>
    
    <mx:Canvas width="214" height="25" x="94" y="370" backgroundColor="#ff0000" backgroundAlpha=".5">
      <mx:LinkBar dataProvider="mapStack"  />
    </mx:Canvas>
</mx:Application>

      感觉不错,教程基本到这里算告一个段落了.整体的体现基本算出来了,不过下一部分就是加标签了,这个很重要的,是可以应用到非常实用的方面
文章如果有错误或者缺少文件,请发邮件提交给我们
上一篇:FLEX地图应用教程之二
下一篇:FLEX地图应用教程之四
Tags:    FLEX地图应用教程之三
>>> 最新评论:(共有 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号