在前面文章“Flex离线地图和在线谷歌地图实现” 中粗略的实现了基于arggis的离线和在线加载谷歌地图。

代码很多地方引用了内部的方法导致不能很好的运行,下面将呈现完整的实现。

GoogleMapLayer代码

package cn.showclear.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;/***  自定义MapLayer,实现了离线地图和在线谷歌地图的加载。 * @author LuLihong* @date 2013-10-24* */public class GoogleMapLayer extends TiledMapServiceLayer {private var _tileInfo:TileInfo=new TileInfo();/*** 离线地图路径 */private var _gisDir:String = "F:\\map\\googlemaps\\roadmap";/*** 是否离线模式 */private var isOffMode:Boolean = true;public function GoogleMapLayer() {super();buildTileInfo();setLoaded(true);}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)  ];}}
}

MapDemo代码

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:esri="http://www.esri.com/2008/ags" xmlns:gis="cn.showclear.gis.*"><fx:Script><![CDATA[import com.esri.ags.events.MapEvent;import com.esri.ags.geometry.MapPoint;import com.esri.ags.utils.WebMercatorUtil;private function maploadHandler(event:MapEvent):void  {esriMap.centerAt(fmtMapPoint(120.1,30.2));  //设置中心点, 杭州西湖三塘映月岛esriMap.level = 12;  //设置级别}/*** 将经纬度坐标转换为墨卡托坐标*/private static function fmtMapPoint(lng:Number, lat:Number) : MapPoint {return WebMercatorUtil.geographicToWebMercator(new MapPoint(lng, lat)) as MapPoint;}]]></fx:Script><fx:Declarations><!-- 将非可视元素(例如服务、值对象)放在此处 --></fx:Declarations><esri:Map id="esriMap" logoVisible="false"  openHandCursorVisible="false"scaleBarVisible="true"zoomSliderVisible="false" load="maploadHandler(event)" ><gis:GoogleMapLayer id="googleMapLayer"/></esri:Map>
</s:Application>

离线地图文件格式:F:\map\googlemaps\roadmap\1\1\0.png

源代码:Flex离线地图和在线谷歌地图实现源代码,只要1点积分,我相信我提供的知识绝对不止1分

Flex离线地图和在线谷歌地图实现完整版相关推荐

  1. Dataset之谷歌地图数据集:谷歌地图数据集的简介、安装、使用方法之详细攻略

    Dataset之谷歌地图数据集:谷歌地图数据集的简介.安装.使用方法之详细攻略 目录 谷歌地图数据集的简介 谷歌地图数据集的安装 谷歌地图数据集的使用方法 谷歌地图数据集的简介 谷歌地图中的1000多 ...

  2. mapboxgl加载google地图、高德地图的在线切片地图

    mapboxgl加载google地图.高德地图的在线切片地图 1.加载google地图,只需将将style换为如下内容,并根据需要更换地图类型(注释部分)即可. style: {"versi ...

  3. 基于web的c语言在线编译器的设计步骤,定稿毕业论文基于WEB的C语言在线学习系统毕业设计完整版(范文1)...

    <[毕业论文]基于WEB的C语言在线学习系统毕业设计.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)毕业论文基于WEB的C语言在线学习系统毕业设计(完整版)>相关文档 ...

  4. 地图上分成一块一块区域 高德地图_在谷歌地图上绘制行政区域轮廓【结合高德地图的API】...

    实现思路: 1.利用高德地图行政区域API获得坐标列表 2.将坐标列表绘制在谷歌地图上[因为高德地图和国内的谷歌地图都是采用GCJ02坐标系,所有误差很小,可以不进行坐标误差转换] 注意点: 1.用百 ...

  5. php谷歌地图,php – 使用谷歌地图提交位置

    我有一个html表单,我想嵌入谷歌地图,以便用户可以指出一些位置.提交表格后如何获取位置? 谢谢 解决方法: 虽然@zerkms给出了指向正确信息的指针,但这可能还不够.我创建了一个fiddle wi ...

  6. html地图添加marker,谷歌地图 API 开发之添加标记

    创建地图之后,基本上都需要标记位置的,就是那个圆点.然后参考谷歌的API,找了许久,网址: https://developers.google.com... 代码如下: Accessing argum ...

  7. php获取谷歌地图gps定位,谷歌地图 API 开发之获取当前坐标(经纬度)

    很多时候要定位到当前所在的位置,谷歌地图 API 没找到,然后网上搜的是通过原生js geolocation来实现的. 代码如下: var x=document.getElementById(&quo ...

  8. php获取谷歌地图api接口,谷歌地图 API 开发之信息窗口

    信息窗口 简介 InfoWindow 在地图上方给定位置的弹出窗口中显示内容(通常为文本或图像).信息窗口具有一个内容区域和一个锥形柄.柄顶部与地图上的某指定位置相连. 通常,您会将信息窗口附加到标记 ...

  9. Android谷歌地图地理编码,谷歌地图API地理编码多个地点

    我设置了一个小js代码来对一些位置和地点进行地理编码,而不是在地图上.我可以很容易地做一个位置,但我不能让它在两个位置工作.我的工作代码如下,但只针对一个位置. var geocoder = new ...

最新文章

  1. 利用正高Dolphin智能广告监测系统做好违法广告监测
  2. 重新整理Cellset转Datatable
  3. android java服务器文件传输_java – 使用FTPS将文件从android传输到服务器
  4. 谷歌浏览器禁止右滑返回历史_移动端h5禁用浏览器左滑右滑的前进后退功能
  5. python pyside简单布局_python – pyside显示/隐藏布局
  6. ubuntu mysql增加用户_Ubuntu中给mysql添加新用户并分配权限
  7. 找连续数(HDU-5247)
  8. 19春学期《计算机应用基础》123,福师11春学期《计算机应用基础》在线作业一...
  9. 【渝粤教育】广东开放大学 跨文化商务沟通 形成性考核 (39)
  10. 爱上MVC系列~过滤器实现对响应流的处理
  11. STM32——库函数版——超声波测距模块(HC-SR04)
  12. plsql手动修改数据
  13. Flask框架的学习——11—(WTForms表单验证-常用验证器、文件上传、上传文件名称中文问题、验证上传文件格式)
  14. python3魔法方法_Python3 魔法方法详解
  15. Nature Biotechnol | 李家洋/余泓团队利用平铺删除策略打破性状连锁,突破水稻产量瓶颈...
  16. 快速排序算法的发明者霍尔
  17. 定了!AI视觉泰斗朱松纯教授归国就任北大人工智能研究院院长
  18. com.thoughtworks.xstream.converters.reflection.ReflectionConverter,用XSTream将xml转换为Java对象
  19. 7.微信小程序做按比例截取图片
  20. git clone 报 “remote: The project you were looking for could not be found.”

热门文章

  1. STM32安装教程和J-link烧录驱动安装教程【第二天】
  2. 【微信小程序系列:二】小程序常用功能:跳转地图、扫一扫、人脸识别、拍照、拨打电话、调整屏幕亮度、文字可复制、监听截屏...
  3. 大数据时代,人的行为真的可以被预测吗?
  4. 叮咚小区VS小区无忧
  5. Qt编写安防视频监控系统59-子模块3图文警情
  6. 【微信小程序】wampserver之路启航
  7. Ubuntu 13.10 UEFI主板安装教程 制作U盘自启动(博主机型:Thinkpad X230i)
  8. Spring Security 在互联网项目中的实战分享
  9. 在网页加载完毕时,自动触发某个按钮的点击事件(HTML)
  10. 优优聚:美团真相全在杨幂的贯口中