地图上嵌入图片 - ArcGIS for FLEX API
2012-12-29 14:26
399 查看
要实现图片嵌入到地图中,并随着地图的放大缩小而跟着变化。
GoogleAPI提供了map.addOverlay(new GroundOverlay(...));可以轻松实现。
但查看ArcGIS for FLEX API
ArcGISImageServiceLayer
ArcGISDynamicMapServiceLayer
ArcGISTiledMapServiceLayer
…
(这些都是加载ArcGIS发布的服务)
也可以继承TiledMapServiceLayer加载Google或者其他的切片服务
但是要加载一张单纯的可放大缩小的图片,需要用GraphicsLayer
见如下代码:
GraphicsLayer的symble设置为PictureFillSymbol,可以看到我把PictureFillSymbol的旋转角度参数angle设成0.001,这是因为flash player11的一个bug,angle默认为0会使图片无法显示。
目前为止地图上可以显示一张图片,由于PictureFillSymbol的内容是平铺的,所以图片还不能随地图放大缩小。
接下来监听ZOOM事件,每次ZOOM_START都重新计算图片大小和位置
效果如下:
GoogleAPI提供了map.addOverlay(new GroundOverlay(...));可以轻松实现。
但查看ArcGIS for FLEX API
ArcGISImageServiceLayer
ArcGISDynamicMapServiceLayer
ArcGISTiledMapServiceLayer
…
(这些都是加载ArcGIS发布的服务)
也可以继承TiledMapServiceLayer加载Google或者其他的切片服务
但是要加载一张单纯的可放大缩小的图片,需要用GraphicsLayer
见如下代码:
//添加layer,设置PictureFillSymbol graphicsLayer = new GraphicsLayer(); var graphic:Graphic = new Graphic(); var polygon:Polygon = new Polygon(); var ring:Array = new Array(); ring.push(new MapPoint(11131949,6446276)); ring.push(new MapPoint(11131949,-6706)); ring.push(new MapPoint(16697924,-6706)); ring.push(new MapPoint(16697924,6446276)); ring.push(new MapPoint(11131949,6446276)); polygon.addRing(ring); graphic.geometry = polygon; var fillSymbol:PictureFillSymbol = new PictureFillSymbol((event.target as LoaderInfo).content,251,251,1,1,0,0,0.001,null); graphic.symbol = fillSymbol; graphicsLayer.add(graphic); myMap.addLayer(seaAreaLayer);
GraphicsLayer的symble设置为PictureFillSymbol,可以看到我把PictureFillSymbol的旋转角度参数angle设成0.001,这是因为flash player11的一个bug,angle默认为0会使图片无法显示。
目前为止地图上可以显示一张图片,由于PictureFillSymbol的内容是平铺的,所以图片还不能随地图放大缩小。
接下来监听ZOOM事件,每次ZOOM_START都重新计算图片大小和位置
myMap.addEventListener(ZoomEvent.ZOOM_START,ZOOM_STARTHandler);
// 地图zoom事件,动态改变图片的大小和偏移 private function ZOOM_STARTHandler(e:ZoomEvent):void { var extent:Extent = (((graphicsLayer.graphicProvider as ArrayCollection).getItemAt(0) as Graphic).geometry as Polygon).extent; var resolution:Number = myMap.lods[myMap.level].resolution; var width:Number = extent.width/resolution; var height:Number = extent.height/resolution; ((( graphicsLayer.graphicProvider as ArrayCollection).getItemAt(0) as Graphic).symbol as PictureFillSymbol).width = width; ((( graphicsLayer.graphicProvider as ArrayCollection).getItemAt(0) as Graphic).symbol as PictureFillSymbol).height = height; ((( graphicsLayer.graphicProvider as ArrayCollection).getItemAt(0) as Graphic).symbol as PictureFillSymbol).xoffset = width/2; ((( graphicsLayer.graphicProvider as ArrayCollection).getItemAt(0) as Graphic).symbol as PictureFillSymbol).yoffset = height/2; }
效果如下:
相关文章推荐
- 地图上嵌入图片 - ArcGIS for FLEX API
- 自定义ArcGIS API for Flex 地图提示窗体
- ArcGIS API for Flex(一) 新增地图和图层
- ArcGIS API for Flex 调用天地图、e都市瓦片地图
- arcgis for flex api version3.7 教程:2.通过地图服务的ID添加地图
- 使用ArcGIS API for Flex构建Android和iOS移动地图应用程序
- arcgis for flex api version3.7 教程:5.使用Editor对地图进行编辑
- ArcGIS API For Flex(在应用程序中添加web地图)
- 地图中的BI图表解决方案(ArcGIS API for Flex)
- ArcGis api for flex 中 Map控件的属性开关(地图控件的导航功能开关属性)
- 使用ArcGIS Server for Flex API 开发包agslib加载天地图2.0版球面墨卡托地图 .
- ArcGIS API for Flex 调用天地图和Google地图服务
- ArcGIS API for Silverlight之配准JPG图片地图文字倾斜解决方案
- 基于ArcGIS API for Flex的区域性助老助残地图服务
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(四)地图导航控件模块
- ArcGIS.Server.9.3和ArcGIS API for Flex实现基本的地图浏览(一)
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(五)地图切换以及图层显示模块
- 南沙政府应急系统之GIS一张图(arcgis api for flex)讲解(四)地图导航控件模块
- ArcGIS API For Flex(设置地图空间范围)
- arcgis for flex api version3.7 教程:1.添加地图和图层