基于gmap.net制作离线地图下载器
网上已有大量文章介绍gamp.net和离线下载相关的文章了。我就不在介绍gmap相关的文章了,这里着重介绍一下下载相关原理。其实gmap.net本身已自带下载工能,只是离线图片下载到sqlit中,现将其扩展一下,支持多种方式存储。
1、gmap源码下载http://greatmaps.codeplex.com/
2、效果展示
3、实现原理
当我们下载源码后最主要关心是GMap.NET.Core下的GMap.NET.MapProviders和GMap.NET.Projections。mapproviders已经提供了许多地图驱动,但缺少国内的一些地图,网上也有大量介绍对接国内相关地图的文章。Projections是投影实现。
有了MapProviders和Projections之后下面就可以实现下载了。首先你可以在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
基于gmap.net制作离线地图下载器的更多相关文章
- 基于GMap.NET地图下载器的开发和研究
基于GMap.NET地图下载器的开发和研究 软件下载地址:https://pan.baidu.com/s/1ay0aOm3fiZ35vlfD8kFYFw 1.地图浏览功能 可以浏览谷歌地图.百度.ar ...
- 基于vue实现百度离线地图
基于vue实现百度离线地图 1. 百度地图API文件获取 有网络 的情况下,需引入百度地图API文件.如下: <script type="text/javascript" s ...
- .NET破解之太乐地图下载器【非暴破】
不知不觉,接触破解逆向已经三个月了,从当初的门外汉到现在的小白,这个过程只有经历过才知道其中的苦与乐: 有无知.困惑.痛苦.惊喜.彻悟.欣慰…… 有无助的软件脱壳,茫然的代码分析,有无趣的反复测试, ...
- 我的Android进阶之旅------>Android基于HTTP协议的多线程断点下载器的实现
一.首先写这篇文章之前,要了解实现该Android多线程断点下载器的几个知识点 1.多线程下载的原理,如下图所示 注意:由于Android移动设备和PC机的处理器还是不能相比,所以开辟的子线程建议不要 ...
- 利用ArcGIS-Server瓦片制作离线地图包(*.tpk)_详细流程
1.写在前面 本人是综合了好几个资料才最终制作成功,在这个过程中发现网上好多博客写的步骤不是很详细,因此就把自己的详细制作步骤全部分享出来,可以供需要的小伙伴参考. (1)本文档不讨论tpk文件的详细 ...
- <基于Qt与POSIX线程>多线程下载器的简易搭建
原创博客,转载请联系博主! 本项目已托管到本人Git远程库:https://github.com/yue9944882/Snow 项目目标 Major Functionality 开发环境: Ce ...
- C#版谷歌地图下载器设计与实现
关于如何将地球经纬度坐标系统转换成程序中常用到的平面2D坐标系统,网上的文章很多,参考http://www.cnblogs.com/beniao/archive/2010/04/18/1714544. ...
- java离线地图web GIS制作
因为项目需求,要做一个web地图,之前做过高德的在线地图,它提供了一系列的API,并且由于是国产的,所以开发起来比较容易,现在由于项目是内网使用的,所以需要使用离线地图,由此便开始了: Web GIS ...
- 基于GMap.Net的地图解决方案
一 地图的加载与显示 关于GMap的介绍与使用可以看我以前的文章: GMap.Net开发之在WinForm和WPF中使用GMap.Net地图插件 GMap.Net是.Net下一个地图控件,可以基于Ht ...
随机推荐
- 【笔记】css浮动的一些个人见解
看<css 权威指南>已经有差不多两个月时间了,正好最近读到浮动这一章写一写个人对立面的概念的一些见解吧. 说之前还真不得不说这本书卖之前以为会说得通俗易懂读后才发现其实有些概念从文意上理 ...
- react项目中遇到的坑
1,touchStart和touchEnd 如果touchstart和touchend改变的是同一个state,那么在首次加载渲染的时候组件会陷入死循环,原因是touchstart会直接触发,但此时s ...
- C# 将Access中时间段条件查询的数据添加到ListView中
C# 将Access中时间段条件查询的数据添加到ListView中 一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Col ...
- Spring+redis整合遇到的问题集以及注意事项
redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...
- winform程序压缩文件上传,服务器端asp.net mvc进行接收解压
期间编程没什么难度,唯一可能忽略导致结果失败是asp.net mvc配置 对于压缩文件大的话,需要配置mvc的最大接收量: <system.web> <httpRuntime ma ...
- 懒人小技巧, Toad 常用偷懒方法
用toad很久了, 感叹它的功能强大的同时整理了一些相关技巧, 有以前在网上看到的也有自己平时用的时候偶尔发现的, 分享一下, 它对用户体验方面做的真的很到位, 通过各种方式来方便用户的操作. 菜鸟 ...
- php中HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR的使用
1.REMOTE_ADDR:浏览当前页面的用户计算机的ip地址2.HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关3.HTTP_CLIENT_IP:客户端的ip 在PHP 中 ...
- Python一些方法的用法集锦
1.range()方法: >>>range(5) [0, 1, 2, 3, 4] >>>a= ["heke","sdsdjs" ...
- Node.js:上传文件,服务端如何获取文件上传进度
内容概述 multer是常用的Express文件上传中间件.服务端如何获取文件上传的进度,是使用的过程中,很常见的一个问题.在SF上也有同学问了类似问题<nodejs multer有没有查看文件 ...
- Python之Django rest_Framework框架源码分析
#!/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import APIView from rest_fram ...