Flex离线地图和在线谷歌地图实现
来源:互联网 发布:数据运营专员做什么的 编辑:程序博客网 时间:2024/05/16 17:22
下面代码是使用arggis的免费库“agslib-3.4-2013-06-30.swc”开发的在线谷歌地图和离线地图类。
实现理论:在线模式是根据谷歌地图提供的文件服务调用地图资源;离线模式估计本地文件访问离线文件。
当然你也可以将离线文件发布在内网文件服务器直接调用,不需要存放本地。关键就是能根据level, row, col调用文件就行。
GoogleMapLayer代码如下:
package cn.showclear.modules.gis{import com.esri.ags.SpatialReference;import com.esri.ags.geometry.Extent;import com.esri.ags.geometry.MapPoint;import com.esri.ags.layers.TiledMapServiceLayer;import com.esri.ags.layers.supportClasses.LOD;import com.esri.ags.layers.supportClasses.TileInfo;import flash.net.URLRequest;import mx.events.PropertyChangeEvent;import mx.logging.ILogger;import cn.showclear.manager.Managers;import cn.showclear.utils.LoggerUtil;/** * 自定义MapLayer,实现了离线地图和在线谷歌地图的加载。 * @author LuLihong * @date 2013-10-24 * */public class GoogleMapLayer extends TiledMapServiceLayer{private const log:ILogger = LoggerUtil.getLogger(GoogleMapLayer);private var _tileInfo:TileInfo=new TileInfo();/** * 离线地图路径 */private var _gisDir:String;/** * 是否离线模式 */private var isOffMode:Boolean = true;public function GoogleMapLayer() {super();buildTileInfo();setLoaded(true);_gisDir = GisHelper.gisDir;isOffMode = GisHelper.isOffLoadMode();log.debug("gisDir:" + _gisDir);//配置属性改变监听Managers.getAppConfigManager().addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, onPropChanged);}private function onPropChanged(e:PropertyChangeEvent):void {if( e.property == GisHelper.KEY_MAP_DIR) {log.info("update gis map location:" + e.newValue);_gisDir = GisHelper.gisDir;refresh(); //重新刷新地图} else if (e.property == GisHelper.KEY_LOAD_MODE) {isOffMode = GisHelper.isOffLoadMode();refresh();}}override public function get fullExtent():Extent {return new Extent(-20037508.342787, -20037508.342787, 20037508.342787, 20037508.342787, spatialReference);}override public function get initialExtent():Extent {return new Extent(-20037508.342787, -20037508.342787, 20037508.342787, 20037508.342787, spatialReference);}override public function get spatialReference():SpatialReference {return new SpatialReference(102113);}override public function get tileInfo():TileInfo {return _tileInfo;}//获取矢量地图override protected function getTileURL(level:Number, row:Number, col:Number):URLRequest {return new URLRequest(fmtURL(level, row, col));}private function fmtURL(level:Number, row:Number, col:Number):String {if (isOffMode) {return _gisDir + "\\" + level + "\\" + col + "\\" + row + ".png";} else {return "http://mt"+(col%4)+".google.cn/vt/v=w2.114&hl=zh-CN&gl=cn&" + "x=" + col + "&" + "y=" + row + "&" + "z=" + level+ "&s=";}}private function buildTileInfo():void {_tileInfo.height=256; _tileInfo.width=256; _tileInfo.origin=new MapPoint(-20037508.342787, 20037508.342787); _tileInfo.spatialReference = spatialReference; _tileInfo.lods = [ new LOD(0, 156543.033928, 591657527.591555), new LOD(1, 78271.5169639999, 295828763.795777), new LOD(2, 39135.7584820001, 147914381.897889), new LOD(3, 19567.8792409999, 73957190.948944), new LOD(4, 9783.93962049996, 36978595.474472), new LOD(5, 4891.96981024998, 18489297.737236), new LOD(6, 2445.98490512499, 9244648.868618), new LOD(7, 1222.99245256249, 4622324.434309), new LOD(8, 611.49622628138, 2311162.217155), new LOD(9, 305.748113140558, 1155581.108577), new LOD(10, 152.874056570411, 577790.554289), new LOD(11, 76.4370282850732, 288895.277144), new LOD(12, 38.2185141425366, 144447.638572), new LOD(13, 19.1092570712683, 72223.819286), new LOD(14, 9.55462853563415, 36111.909643), new LOD(15, 4.77731426794937, 18055.954822), new LOD(16, 2.38865713397468, 9027.977411), new LOD(17, 1.19432856685505, 4513.988705), new LOD(18, 0.597164283559817, 2256.994353), new LOD(19, 0.298582141647617, 1128.497176) ];}}}
0 0
- Flex离线地图和在线谷歌地图实现
- Flex离线地图和在线谷歌地图实现<完整版>
- 谷歌地图的离线地图下载
- 利用flex加载离线地图
- Flex读取离线地图CacheMap
- 百度谷歌离线地图解决方案(离线地图下载)
- 百度谷歌离线地图解决方案(离线地图下载)
- 离线地图的实现
- 关于百度地图的离线地图实现
- 离线谷歌卫星地图加载服务中间件调用示例 For Flex
- 实现离线地图行政区域划分
- Google map离线API实现离线地图
- 谷歌离线地图FTP下载
- 谷歌离线地图的使用(1)
- 谷歌地图离线包-尝试
- 谷歌离线地图开发四步曲
- 谷歌离线地图API解析
- 加载离线的谷歌地图
- 九度OJ--1049--字符串去特定字符
- windows server 2008 x64中安装office2003,dcom中找不到microsoft excel application .
- 规划备用访问映射 (Office SharePoint Server)
- oracle dataguard 操作系统重启后数据不能同步
- smile
- Flex离线地图和在线谷歌地图实现
- Hibernate 中的QBC 语言中使用 Restrictions 进行日期比较
- SQL Server 2008新特性——SSMS增强
- 深入理解JavaScript中的this关键字
- 算法导论_计数排序学习笔记
- 正则表达式
- 4周项目1
- vtk例子中tutorial里的实例源码详解
- sdgfsdxcvxcvxcv