现在的位置: 首页 > 综合 > 正文

Flex绘制地图Map

2013年10月08日 ⁄ 综合 ⁄ 共 2524字 ⁄ 字号 评论关闭

更多教程

http://www.uncool.cn/blogs/read.php?232

我做了一个在线地图,其实很简单,用到了一个第三方的API,给我们变成带来了很多方便,只用在程序中调用一下API中的方法showMap(),在这里用到了一个三方的API
earthplayerlib.swc下载地址 进入下载页面后右键目标另存为。

下载下来加入flex工程的libs目录下,这个大家应该都会....不会的拉出去非礼5分钟....

先来看一下效果如下:


这里API中可以显示多个地图,有LiveMap,GoogleMap,51Map..

我这个例子做的就是可以切换显示那种地图

现在来看一下代码中是怎么实现的如下:

<?xml version="1.0"
encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
 xmlns:maps="com.earthplayer.maps.*"
creationComplete="init()"
 backgroundGradientColors="[#FFFFFF,#FFFFFF]">

 
 <mx:Script>
  <![CDATA[
   import
com.earthplayer.maps.MapUpdateCenterEvent;
   import
com.earthplayer.maps.MapCanvas;
   
   //记录地图上显示的红叉的坐标(精度和纬度)

   private var
currentLngLat:Point = new Point(116.37819,39.92374);
   
   
   private
function init():void {
    //显示map的方法

    showMap();

    //可以注意到我没有再在地图上搞一个CANVAS来监听鼠标事件,而是在ViewStack监听UPDATECENTER

    myStack.addEventListener(MapUpdateCenterEvent.UPDATECENTER,updateCenter);

   }
   
   
   private
function showMap():void {
    //显示map

    (myStack.selectedChild
as MapCanvas).setCenter(currentLngLat,zoom.value);
   }
   
   
   private
function changeZoom(value:int):void {
    //设置坐标是根据滚动轴来确定放大的比例

    var
z:int = zoom.value += value;
    if(z
> 17) {
     z
= 17;
    }
else if(z < 5) {
     z
= 5;
    }

    zoom.value
= z;
    showMap();

   }
   
   
   private
function updateCenter(event:MapUpdateCenterEvent):void {
    //然后当鼠标有移动后,Point不断的更新内部变量

    currentLngLat.x
= event.lng;
    currentLngLat.y
= event.lat;
   }
  ]]>
 </mx:Script>
 
 <mx:ViewStack
valueCommit="showMap()" id="myStack" width="100%" height="100%"
visible="true" x="0" y="0">
  <maps:MapLive
label="LIVEMap" width="100%" height="100%" visible="true" x="0"
y="0"/>
  <maps:Map51ditu
label="51Map" width="100%" height="100%" visible="false" x="0"
y="0"/>
  <maps:MapGoogle
label="GoogleMap" width="100%" height="100%" visible="false" x="0"
y="0"/>
 </mx:ViewStack>

 <mx:Button alpha="2"
paddingLeft="1" paddingRight="1" id="zoomBig" label="+"
textAlign="center"
  click="changeZoom(1)" y="9"
width="20" height="20" left="10"
toolTip="放大"/>
 <mx:VSlider x="10" y="36"
snapInterval="1" liveDragging="true" change="showMap()"
tickInterval="1" id="zoom"
  minimum="5" maximum="17"
value="5" height="331"/>
 <mx:Button alpha="2"
paddingLeft="1" paddingRight="1" id="zoomSmall" label="-"
textAlign="center"
  click="changeZoom(-1)"
width="20" height="20" y="372" left="9"
toolTip="缩小"/>
 <mx:Canvas width="214" height="25"
x="35" y="9" backgroundColor="#FF0000"
backgroundAlpha=".5">
  <mx:LinkBar
dataProvider="myStack"/>
 </mx:Canvas>
</mx:Application>

把代码贴上来看上去有点乱,本来是想弄成图片,结果弄上来一看不是很清楚,大家可以把代码贴到eclipse里面看可能能清晰一点,其实实现这个很简单,我代码中都有注释,大家慢慢学习吧。

抱歉!评论已关闭.