1、gmap.net 源码下载http://greatmaps.codeplex.com/

2、Gmap.net基本使用。下载源码后源码结构如下图所示:

制作下载器需要用到的两个库是gmap.net.core和gmap.net.windowsforms两个库,编译后可以把多余的工程删掉,新建一个DownMap工程。

然后将gmap.net.core和gmap.net.windowsforms两个库添加到DownMap下,将工具栏中GmapControl的控件拖到窗体中,然后load事件中添加以下几个参数运行后能看到相应地图显示了。

3、下载器编制作。其实gmap.net本身已自带下载工能,只是离线图片下载到sqlit中,现将其扩展一下,支持多种方式存储。最终界面如下图所示,界面什么的都是次要的只要懂得原理即可

gmap自带很多地图数据源,但缺少国内地图数据源,扩展一个像高德地图数据源也非常简单,其他数据源也类似,百度有点特殊。下面扩展一个高德数据源。在gmap.net.core中添加一个amap文件夹,

AMapProviderBase代码:

public abstract classAMapProviderBase : GMapProvider

{publicAMapProviderBase()

{

MaxZoom= null;

RefererUrl= "http://www.XX.com/";

Copyright= string.Format("©{0} XX Corporation, ©{0} NAVTEQ, ©{0} Image courtesy of NASA", DateTime.Today.Year);

}public overridePureProjection Projection

{get{return MercatorProjection.Instance;//高德采用webMercator投影

}

}

GMapProvider[] overlays;public overrideGMapProvider[] Overlays

{get{if (overlays == null)

{

overlays= new GMapProvider[] { this};

}returnoverlays;

}

}

}

AMapProvider 代码:

1 public classAMapProvider : AMapProviderBase2 {3 public override stringToString()4 {5 return "AMap";6 }7

8 public static readonlyAMapProvider Instance;9

10 readonly Guid id = new Guid("EF3DD303-3F74-4938-BF40-232D0595EE88");//每个数据源有不同的ID

11 public overrideGuid Id12 {13 get { returnid; }14 }15

16 readonly string name = "高德地图--栅格";17 public override stringName18 {19 get

20 {21 returnname;22 }23 }24 staticAMapProvider()25 {26 Instance = newAMapProvider();27 }28

29 public override PureImage GetTileImage(GPoint pos, intzoom)30 {31

32 string url =MakeTileImageUrl(pos, zoom, LanguageStr);33 returnGetTileImageUsingHttp(url);34

35

36 }37

38 string MakeTileImageUrl(GPoint pos, int zoom, stringlanguage)39 {40 int serviceIndex = 0;41 Random rd = newRandom();42 serviceIndex = rd.Next(1, 4);43 //string url = string.Format(UrlFormat, zoom, pos.X, pos.Y, Uri);

44 string url = string.Format(UrlFormat, pos.X, pos.Y, zoom, "0" +serviceIndex);45 returnurl;46 }47

48

49 static readonly string UrlFormat = "http://webst{3}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={0}&y={1}&z={2}";50

51 }52 }

UrlFormat说明:

用浏览器打高德地图按F12监视一下就能获取到相应URL,然后替换到UrlFormat中即可。

然后在GMapProviders中添加刚新增的数据源:

public static readonly AMapProvider AMap = AMapProvider.Instance;

然后修改gmapControl1.mapprovider=GMapProviders.AMap;

运行后能看到相应高德地图底图了

当你按住alt键画下载区域(this.mapControl1.SelectedArea)或根据行政区域(计算多边形最小外接矩形)得到一个下载区域时会得到一个相应矩形:

得到这个矩形(this.mapControl1.SelectedArea)的左上角坐标和右下角坐标去计算相应要下载的瓦片,具体接口

GPoint topLeft =_provider.Projection.FromPixelToTileXY(_provider.Projection.FromLatLngToPixel(rect.LocationTopLeft, Convert.ToInt32(level)));

GPoint rightBottom=_provider.Projection.FromPixelToTileXY(_provider.Projection.FromLatLngToPixel(rect.LocationRightBottom, Convert.ToInt32(level)));//_provider当前选择的mapProvider,rect为当前选择的区域,level为选择等级//载循环获取瓦片:

for (long x = (topLeft.X); x <= (rightBottom.X); x++)

{for (long y = (topLeft.Y); y <= (rightBottom.Y); y++)

{//这里实现下载获得图片:

PureImage img= GMaps.Instance.GetImageFrom(_provider, new gpoint(x,y), level, out ex);//接下载就可以自行存储了。(可以存到文件夹啊数据库啊等等)Level/x_y.png}

}

4、gmap使用离线地图(将瓦片发布在IIS中):

首先在MapProviders中的XXXProvider.CS代码最后面都能看到UrlFormat字段。替换你自己的路径即可。

那么将urlFormat的路径代替为

即可。

4、当然下载的瓦片也可以对接在openlayer和leaflet等开源的webgis中,

以上就是全部步骤,希望对您有所帮助。如果凝问可以联系我。

嵌入式linux离线地图,基于gmap.net制作离线地图下载器相关推荐

  1. linux 文件系统字体小,基于嵌入式Linux平台的最小文件系统的制作

    工作平台:FL2440 交叉编译环境:arm-linux-gcc 3.4.1 busybox版本:1.9.1 1) 制作文件系统总目录: mkdir my_rootfs 2) 编译&安装bus ...

  2. 嵌入式Linux实验手册——基于ARM9 S3C2410实验平台.doc

    嵌入式Linux实验手册 基于ARM9 S3C2410 实验平台   1. 实验概述... 1 2. 实验环境配置... 1 2.1 开发主机配置... 1 2.2 实验板介绍... 1 2.3 实验 ...

  3. python 小说下载工具_python 制作网站小说下载器

    基本开发环境 ・ Python 3.6 ・ Pycharm 相关模块使用 目标网页分析 输入想看的小说内容,点击搜索 这里会返回很多结果,我只选择第一个 网页数据是静态数据,但是要搜索,是post请求 ...

  4. python小说下载器_python 制作网站小说下载器

    基本开发环境 · Python 3.6 · Pycharm 相关模块使用 目标网页分析 输入想看的小说内容,点击搜索 这里会返回很多结果,我只选择第一个 网页数据是静态数据,但是要搜索,是post请求 ...

  5. 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案

    描述 嵌入式图形用户界面( GUI, Graphic UserInterface)系统作为嵌入式系统中的一大关键技术,为用户提供设备的控制接口,其性能的好坏,界面的美观程度,影响着用户对产品的购买意愿 ...

  6. 嵌入式linux图片浏览器,基于嵌入式Linux图片浏览器的设计与实现.doc

    基于嵌入式Linux图片浏览器的设计与实现 PAGE PAGE II 本科学生毕业论文(设计) 题目(中 文): 基于嵌入式Linux图片浏览器的设计与实现 (英 文): The design and ...

  7. 嵌入式linux矩阵键盘,基于嵌入式Linux的矩阵键盘驱动程序开发

    O 引 言 随着以计算机技术.通信技术和软件技术为核心的信息技术的发展,嵌入式系统在各个行业中得到了广泛的应用.嵌入式系统已成为当今IT行业的焦点之一.而在嵌入式系统中,键盘是重要的人机交互设备之一. ...

  8. 嵌入式linux电子设计,基于嵌入式Linux的PMP系统设计与实现

    PMP系统简介 便携式多媒体播放器(PMP),也就是通常人们所说的MP4,已成为继MP3以后消费类产品的一个新热点.PMP的主要优点是:携带方便,能够直接播放高品质音/视频文件:也可以浏览图片,以及作 ...

  9. 嵌入式linux无线显示器,基于嵌入式Linux的无线视频传输终端的设计与实现

    摘要: 近年来,多媒体技术与网络技术的迅速发展,以视频为主的多媒体通信成为时代的主题,受到人们越来越多的关注.同时,随着高速无线通信的发展,多媒体和无线通信这两个领域技术相互交叉,产生了新的技术--无 ...

  10. CH340T制作STC51单片机下载器

    一直以来在搞 freescale,反倒是51手很生.一直也没有自己做过系统板之类的东西,暑假里准备比赛的这几天,就仔细的翻阅了一下51相关的内容,自己制作了一个小系统版.下载器用的是USB-UART的 ...

最新文章

  1. 女友让我破解植物大战僵尸!我干脆撸了一款一样的....翻身舔狗把歌唱呀
  2. jdk环境变量配置极速版
  3. 首例人工智能著作权案宣判 软件自动生成的文字内容不构成作品
  4. Xamarin.IOS中MvvmCross的plugin使用方式
  5. 关于python的一些好的书籍推荐-荐书||关于Python的一些书籍推荐
  6. Intel图形库Mesa的持续集成
  7. Opencv与dlib联合进行人脸关键点检测与识别
  8. 《跟我一起写Makefile》读书笔记(3)
  9. PHP8编译swoole出错,swoole自定义错误的方法
  10. php小程序码生成并保存,小程序中如何生成小程序码
  11. 中国甲真菌病药物行业市场供需与战略研究报告
  12. lync显示无法找到服务器,Lync 2013 已知问题
  13. SilverLight企业应用框架设计【五】客户端调用服务端(使用JSON传递数据,自己实现RESTful Web服务)...
  14. MFC窗口之间传递数据(结构体)
  15. Robotics 机器人运动学 DH参数建模
  16. oracle oem打不开,oracle10g的oem打不开解决办法
  17. 风力摆控制系统,stm32f1程序,通过pid控制算法实现了风力摆摆定长直线,变长直线,一定角度摆动,定点停滞
  18. mysql var和varp的区别_var方差(var和方差的区别)
  19. halcon 相似度_怎样用深度学习判断两张图片的相似度?
  20. jfinal整合IJPay paypal支付

热门文章

  1. C# 一个基于.NET Core3.1的开源项目帮你彻底搞懂WPF框架Prism
  2. Mendeley Destop引用格式自定义调整
  3. Linux之忘记密码解决方案
  4. matlab 矩阵线性规划,matlab线性规划-线性规划,matlab
  5. c语言除法的作用,c语言除法(c语言除法保留小数)
  6. 2013年中国区Skyline软件价格体系
  7. 新一代工业系统集成控制软件平台—CODESYS
  8. 代码版本管理软件Git的优势和用法
  9. Maven仓库管理器-Nexus
  10. 简单又实用的MRP手机平台下软件及游戏破解方法