地图上嵌入图片 - ArcGIS for FLEX API
发布时间:2020-12-15 04:33:37 所属栏目:百科 来源:网络整理
导读:要实现图片嵌入到地图中,并随着地图的放大缩小而跟着变化。 GoogleAPI提供了map.addOverlay(new?GroundOverlay(...));可以轻松实现。 但查看ArcGIS for FLEX API ArcGISImageServiceLayer ArcGISDynamicMapServiceLayer ArcGISTiledMapServiceLayer … (这
要实现图片嵌入到地图中,并随着地图的放大缩小而跟着变化。 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,6446276)); polygon.addRing(ring); graphic.geometry = polygon; var fillSymbol:PictureFillSymbol = new PictureFillSymbol((event.target as LoaderInfo).content,251,1,0.001,null); graphic.symbol = fillSymbol; graphicsLayer.add(graphic); myMap.addLayer(seaAreaLayer); GraphicsLayer的symble设置为PictureFillSymbol,可以看到我把PictureFillSymbol的旋转角度参数angle设成0.001,这是因为flash player11的一个bug,angle默认为0会使图片无法显示。
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; } 效果如下:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |