基于gmap.net制作离线地图下载器

Noproblem 2018-02-28 原文

基于gmap.net制作离线地图下载器

  网上已有大量文章介绍gamp.net和离线下载相关的文章了。我就不在介绍gmap相关的文章了,这里着重介绍一下下载相关原理。其实gmap.net本身已自带下载工能,只是离线图片下载到sqlit中,现将其扩展一下,支持多种方式存储。

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

2、效果展示

3、实现原理

       当我们下载源码后最主要关心是GMap.NET.Core下的GMap.NET.MapProvidersGMap.NET.Projectionsmapproviders已经提供了许多地图驱动,但缺少国内的一些地图,网上也有大量介绍对接国内相关地图的文章。Projections是投影实现。

     有了MapProvidersProjections之后下面就可以实现下载了。首先你可以在gmap中画一个下载区域,当然你也可以利用行政区域得到更精确的范围。根据区域能得到左上角和右下角的两个点。然后根据这两个点去计算要下载的瓦片。

代码如下:

 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字段。替换你自己的路径即可。

例如我发布在IIS路径为 http://192.168.1.92:80/szmap/ 

那么将urlFormat的路径代替为

http://192.168.1.92:80/szmap/{z}/{x}_{y}.png

即可。

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

ps写文章真的好累,半天憋不出一个屁来。文章可能写的不够清楚,如有凝问可以与我联系。

还没学会上传附件,等学会了把代码上传上来。

WPF&winform版本地图引擎

http://www.cnblogs.com/Noproblem/p/8480291.html

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

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

例如我们发布在IIS路径为 http://192.168.1.92:80/szmap/,那么将urlFormat的路径代替为

http://192.168.1.92:80/szmap/{z}/{x}_{y}.png即可。

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

写文章真的好累,半天憋不出一个屁来。文章可能写的不够清楚,如有凝问可以与我联系。

还没学会上传附件,等学会了把代码上传上来。

发表于 2018-02-28 11:39 不要急,没问题 阅读() 评论() 编辑 收藏

 

版权声明:本文为Noproblem原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Noproblem/p/8482759.html

基于gmap.net制作离线地图下载器的更多相关文章

  1. Android Google Map API 开发基础知识

    开发基于谷歌地图的应用和普通的android应用差不多都要使用它提供给我们的类库,所不同的是google ma […]...

  2. Go – Map 集合

    目录 概述 声明 Map 生成 JSON 编辑和删除 推荐阅读 概述 Map 集合是无序的 key-value […]...

  3. Google Map API v2 (四)—– 导航路径

    仍然是建议个异步小任务 1 private GetPathTask mGetPathTask = null; […]...

  4. 对Link Map File的初步认识

    Link Map File中文直译为链接映射文件,它是在Xcode生成可执行文件的同时生成的链接信息文件,用于 […]...

  5. 数组的方法 forEach filter map slice splice

    目前一些数组的实用的方法 1 arr.splice(i,n) 删除从i(索引值)开始之后的那个元素。返回值是删 […]...

  6. java 使用Iterator 迭代器遍历AList、Set、Map

    1.ArrayList 1 List list = new ArrayList<Integer>( […]...

  7. Google Map API

    我们在很多网页中都能看到地图导航,比如很多租房网站,都嵌入了地图搜索功能。 其实,实现起来并不难,只需一个Go […]...

  8. Kotlin——高级篇(五):集合之常用操作符汇总

    在上一篇文章Kotlin——高级篇(四):集合(Array、List、Set、Map)基础中讲解到了数组Arr […]...

随机推荐

  1. 玩转PHP中的正则表达式

    玩转PHP中的正则表达式 检验用户输入、解析用户输入和文件内容,以及重新格式化字符串   级别: 中级   正 […]...

  2. Kubernetes Ingress简单入门

    作者:Nick Ramirez 原文链接:https://thenewstack.io/kubernetes- […]...

  3. mysql中exists的详细说明

    之前碰到了一道题,下面简要说明一下: 表结构如下: CREATE TABLE `testa` ( `id` i […]...

  4. 微信小程序—-编写后台服务接口配置文件

    编写后台服务接口配置文件 const basePath = \'http://test.cdbhbc.com/ […]...

  5. linux core dump 生成和调试

    core dump 某些信号的产生会导致产生core dump,包含了进程终止时的内存镜像。在某些时候这个co […]...

  6. Ajax 数据库操作

    为了清楚的说明使用 Ajax 从数据库中存取信息有多么容易,我们要构建一个 MySQL 查询,然后把结果显示在 […]...

  7. jQuery菜鸟教程02

    jQuery 入口函数与 JavaScript 入口函数的区别: jQuery 的入口函数是在 html 所有 […]...

  8. Excel的数据分析—排位与百分比

        某班级期中考试进行后,按照要求仅公布成绩,但学生及家长要求知道排名。故欲公布成绩排名,学生可以通过成绩 […]...

展开目录

目录导航