本篇文章为Android地图SDK离线地图使用教程,iOS离线地图教程请参考:https://lbs.qq.com/mobile/iOSMapSDK/mapGuide/offline
今天继续我们的Android高德之旅,上一篇已经可以显示最基本的地图了,有基本的缩放、旋转功能,还有最后做的小特效,今天这篇文章来记录一下高德地图的5种地图类型。
离线地图开发环境支持谷歌地图、百度地图、高德地图等等所有常用地图类型,支持在局域网内的地图部署、二次开发。
国内提供地图服务的厂家基本上是五家,百度地图、高德地图、腾讯地图、搜狗地图、天地图,国外的一般还有谷歌地图、微软地图(BING地图),这几家的地图服务的api接口都大同小异,甚至很多函数的名字都一模一样,毕竟叫的很通俗,这样也很容易理解,除了引入的地图服务JS文件不同,对象名称不同,其他大多数都类似,这就给了程序员很方便的统一的思路,整体上的流程都如下:
百度在线地图的应用老早就做过,后面经过不断的完善才到今天的这个程序,除了基本的可以载入地图并设置一些相关的属性以外,还增加了各种js函数直接异步加载数据比如动态添加点、矩形、圆形、行政区划等各种。当然最大的是增加了离线地图的支持,当年这个离线地图拖了很久很久才去做,最终还是搞定了。
[核心提示] 回顾地图的发展史,思考一下移动互联网时代的地图应用究竟走在了什么阶段?走进腾讯为你解读零流量地图的缘起和发展。 回顾地图的发展史,思考一下移动互联网时代的地图应用究竟走在了什么阶段?走进腾讯为你解读零流量地图的缘起和发展。 地图的缘起 如果经常去回顾一个产品的历史,就能对它有更本质更纯粹的理解。回顾一下地图的发展史,你会发现科技的进步是如此的迅速。从古代根据山海经绘制的粗糙地图,到现在的精准的电子地图,几乎是飞跃式的发展。最早的地图是圆形的,当时人类对世界地理的认知太过有限;然后地图由圆变
离线地图开发主要有两部分组成:1、获取离线地图数据;因为离线地图一般都是局域网,所以需要离线地图数据放在内网中使用;2、离线地图服务器搭建以及二次开发接口提供,离线地图是一种服务,就像我们Apache提供的WEB服务器一样,他是一种准们的地图服务:提供了包括 WEB服务、TMS服务、WMTS服务等等。
If you’ve ever wanted to be able to download Google Maps data for offline use, you should check out gmapcatcher, a cross-platform application that caches map segments locally.
为什么要用,我想离线地图的好处是不言而喻的,所以很多人做系统的时候都会考虑用离线地图。在此,我给大家介绍几种Arcgis For Android下加载离线地图的方式。
离线地图的核心其实就是拿到这些瓦片地图文件,并不是离线地图的代码怎么写,其实离线地图的网页代码和在线地图的网页代码几乎一致的,主要就是将对应的依赖的js文件从在线的地址改成本地的地址,然后可能多几个特殊的js文件用来本地交互,离线地图完全具备在线地图的大部分功能,离线地图有个好处就是可以离线使用,根本不需要联网,而且也不需要什么秘钥,你只要搞到那些瓦片地图文件就随便你怎么摩擦了。其实在线地图也是通过读取服务器上的离线地图文件加载到网页中的,你在快速的缩放和拖动地图的时候可以看到缝隙和空白,估计此刻就是在从服务器拉取瓦片地图文件来加载,而且这个服务器上的瓦片地图永远是最新的最完整的。
1.高质量的地图数据:Organic Maps使用开放源码的地图数据,这些数据由全球用户共同贡献而成。用户可以通过该应用获得详细的街道地图、卫星图像以及其他相关地理信息。
如今、地图导航作为移动端重要商业入口,可以说把持着APP的“命脉”所在。所以,一款高效稳定的地图SDK对于移动开发者来说尤为重要。下面,BestSDK将为您分析国内外多款免费地图SDK,帮助开发者找到
Windows 中的内置地图应用程序由Microsoft Bing 地图提供支持,可用于快速查找前往某个地点的路线。您可以使用该应用程序轻松保存您最喜欢的地方,如家或工作场所,并创建您以后想记住的地方集合。但是,如果您觉得它的离线地图的自动更新功能不是很有用,您可以立即禁用它。就是这样!
网上其实有很多各种各样的离线地图下载器,大部分都是要收费的,免费的要么是限制了下载的瓦片数量或者级别,要么是下载的瓦片图打上了水印,看起来很难看,由于经常需要用到离线地图,摆脱这个限制,特意花了点时间重新研究了瓦片地图的原理,做了个离线地图下载器,其实瓦片地图下载没有那么复杂,其实就是从开放的几个服务器地址组建要请求的瓦片地图的地址,发送请求以后会自动将图片返回给你,你只需要拿到图片数据保存成图片即可。
引言 2 一 项目背景 3 二 运营模式 3 三 应用分析 4 1 目标群体 4 2 市场占有率 4 3 与同类应用比较 6 3.1 产品分析 6 3.2 功能分析 7 3.3 使用分析 8 3.4 推广方式 9 四 盈利模式 9 1 对于与地图相关商家的增值服务 9 2 手机预装软件和与运营商合作客户端下载软件 10 3 流量变现 10 4 互联网位置服务 10 五 发展前景 11
“想实现一个微信发送位置这个看似简单的场景,开发起来好像还挺复杂?” “之前没用过地图SDK,但是上线时间紧迫,如何快速搞定地图功能?” “对地图能力不太了解,不知道一些功能实际效果如何,应用在那哪些场景?” 相信很多开发者在实现地图场景时都会遇到上述问题。为了降低开发者对地图SDK的学习成本,帮助开发者快速掌握技术要点,腾讯位置服务最近上线了地图SDK示例中心。 示例种类丰富多样。首期发布安卓和iOS两端各10多种示例,覆盖大部分常见地图开发场景。 示例效果一目了然。每个示例都配有视频展示,让
除了传统的街道图地图外,默认的一般都是街道图,还有卫星图、三维图等,其中又有叠加层,比如叠加路况图层和路网图层等,最近去了多家的地图官网看对应的api接口,总体上感觉现在都往2.5D或者3D这块发展,估计这也是未来的一个大趋势,记得有个长辈程序员,花了很多年专门研究opengl之类的玩意,将现有的电网系统换成了3D的,甚至取了个高大上的名字叫世界电网互联系统,直接可以旋转一个球体,查看各种电网路线等,而且现在的安防行业好像也在往3D方向发展,甚至和物联网结合,以3D的模式呈现一栋大楼或者一个小区的三维场景,报警点也是三维呈现,这个效果非常惊艳,一不小心就把大领导震撼了,然后经费就来了。
Win10默认会自带很多的内置应用(地图、游戏、画图3D、Groove音乐、Skye、Xbox),大部分大家都用不到,建议卸载掉。
基站定位一般应用于手机用户,手机基站定位服务又叫做移动位置服务(LBS——Location Based Service),它是通过电信移动运营商的网络(如GSM网)获取移动终端用户的位置信息(经纬度坐标)。
获取边界点一般和行政区划搭配起来使用,比如用户输入一个省市的名称,然后自动定位到该省市,然后对该轮廓获取所有边界点集合输出到js文件,最后供离线使用,获取边界点还有一个功能就是获取当前区域内的左下角右上角等经纬度坐标,这个主要是供离线地图下载使用的,百度地图很好的提供了bdary.get(cityname, function(rs)的函数来获取行政区划的边界点集合,其中rs.boundaries就是所有的边界点集合,估计他是服务器上存储好的每个区域的集合,查询到了立即返回,可能早期也是人工的一点点圈起来连线好存到到数据库的,按照此方式其实可以搞一个程序自动将全国的所有省市边界点集合数据全部扒下来,给离线地图使用,测试了下貌似只支持到县城级别,不支持具体到乡镇。
TMS(Tile Map Service) 是 OSGeo (开源地理基金会) 提出的一种地图瓦片服务。额外补充一句,WMTS、WMS、WFS这些是 OGC(开放地理空间信息联盟)提出的。
微软默认只是放了个回收站在桌面,但是控制面版、我的电脑等图标就没有放出来。但个人觉得还是挺有必要把其放到桌面的。方法如下:
刚刚工作的时候写过百度地图API文档,那时候没有记录到技术博客里面,今天在群里看见有个姑娘在问这个问题,重温了一遍,这个API还算好用。百度地图API,集成简单好用,全面,兼容问题,文档全面;
之前做获取边界点的时候,主要采用的是在线地图的方式,因为在线地图中直接内置了函数可以根据行政区域的名称来自动获取边界,其实这些边界就是一些点坐标集合连接起来的平滑线,然后形成的轮廓图,这种方式有个弊端就是只能在线的时候使用,而我们大部分的应用场景应该是离线的,甚至很多设备永远是离线的,根本不可能去联网获取信息,但是又想要这个各省市区域的轮廓图怎办呢,只能事先拿到下载到这些需要的轮廓图文件才行,这些文件存储的就是经纬度坐标集合,在离线地图中只需要定义不规则线条绘制传入这些经纬度坐标集合即可。
该功能支持切片下载,但是需要注意的是由于切片图层具有可离线使用的最大切片数,所以如果在地图覆盖面积较大时直接下载,离线地图将不会获得最大比例的切片图层
本人写Qt程序这么多年,比较喜欢支持多个Qt版本,尤其是钟情于支持任意Qt版本+任意系统+任意编译器,这句话说起来简单其实实现起来就不容易了,首先你得有个很多版本的测试环境,起码十几个Qt环境要的吧,四五种操作系统要的吧,还要安装各种VS版本免不了的,毕竟win上除了默认的mingw编译器还有很多人用的是msvc编译器,这么一大堆环境折腾下来,没有个1T硬盘是不够的,而且官网发布Qt版本的速度相当快,最慢半年肯定来一个版本,又得测试了,每次发布一个大的版本,除了常用的windows以外,linux要测试吧,而且现在还多出来一些国产linux系统比如deepin new start UOS之类的,也要试试吧,哎呀好累。
说起Android适配,恐怕是每一个Android开发/测试工程师心里的痛,且不论Android设备品牌众多、分辨率各异等痛点,单论Android版本的繁多也会提高Android APP的开发/测试成本。如果能了解Android版本之间的变更差异,会让开发/测试事半功倍。本文即是从这个角度出发,给读者带来一点福利。 故事的开始,须先来说说本文的主角:腾讯路宝,是一款驾车导航APP,腾讯MIG地图平台部打造出品的一款为广大驾车用户提供精准导航和路况的产品。 以下故事就是发生在这款APP上的,且等我慢慢叙来:
标题:LOL: Lidar-only Odometry and Localization in 3D point cloud maps
点聚合在地图相关应用中比较常用,比如在地图上查询结果通常以标记点的形式展现,但是如果标记点较多,不仅会大大增加客户端的渲染时间,让客户端变得很卡,而且会让人产生密集恐惧症,密密麻麻的一大堆点挤在一起。为了解决这一问题,我们需要一种手段能在用户有限的可视区域范围内,利用最小的区域展示出最全面的信息,而又不产生重叠覆盖,这个东西专业名词就叫点聚合,百度地图内置了方法可以设置点聚合BMapLib.MarkerClusterer,注意这个方法在BMapLib中而不是在BMAP中,所以要使用点聚合的话需要引入这个MarkerClusterer_min.js类文件,不然是没用的,这个很容易忽视,因为绝大部分类和方法都是在BMap中都有。
我们调查了有关自动驾驶汽车的研究文献,重点关注的是自 DARPA 挑战赛以来开发的配备有可归类为 SAE 3 级或更高级的自主系统的自动汽车。自动驾驶汽车的自主系统的架构通常可分为感知系统和决策系统。感知系统通常分为负责自动驾驶汽车定位、静态障碍物地图测绘、移动障碍物检测与跟踪、道路地图测绘、交通信号检测与识别等多种任务的许多子系统。决策系统通常也分为许多子系统,分别负责路线(route)规划、路径(path)规划、行为选择、运动规划、控制等。在本调查报告中,我们会介绍自动驾驶汽车的自主系统的典型架构。我们还会总结在感知和决策相关方法方面的研究成果。此外,我们还将详细描述巴西圣埃斯皮里图联邦大学(UFES)的汽车 IARA 的自主系统的架构。最后,我们会列出科技公司开发的和媒体报道的突出的自动驾驶研究汽车。
最近一直在倒腾Arcgis Android API等相关的东西,想把自己的做的图放到地图上去,也就是离线地图,穷人一般是没有钱的,一个月好几十的流量是开不起的,所以就左捉摸,右思考,看着API里面有离线地图,始终没有弄明白是怎么回事,直到今天下午,想起来了就有试了试,结果成功了,那个激动啊,好半天那……
WhyNotWin11 是个有意思的项目,本以为是从 360 度“抨击” Windows 11 的不好用之处,但它是一个实实在在地从硬件角度告诉你为什么你的机器不适合运行 Windows 11 的脚本。从名字上一样看不出来它到底是什么的还有 organicmaps,它是一个离线让你方便找寻各种小道的地图,使用了地图版 wiki 数据集。但是无论 WhyNotWin11 还是 organicmaps 它的真正用途还是和名字非常契合的。
路线查询的功能只有在线地图才有,因为这个路线规划需要经常更新的,这个数据同步需要大量的人力物力去统计,所以这玩意必须放在服务器端,就算是类似于手机端一样的放在本地离线,也需要隔一段时间更新的,不然数据很可能不正确。路线查询也叫出行规划,基本上分成两大类,一种是开车的一种是不开车的,其中开车的又有多种策略供选择比如最少时间、最短距离、避开高速等,不开车的也有多种策略供选择比如最少时间、最少换乘、最少步行、不乘地铁。路线查询的功能,现在貌似默认只支持经纬度作为参数了,之前是可以直接填入中文名称地名的比如门牌号之类的,这种地址解析或者逆解析的功能需要去后台用对应的秘钥去开通才行。
摄像机点位的功能主要是在图片地图和在线离线地图上设置对应摄像机的位置,然后双击可以实时预览对应摄像机的视频,在图片地图上拖动摄像机图标到对应位置,系统会自动保存位置信息,在网页地图上的摄像机位置,需要异步更新,比如先从右侧选择需要更新位置的摄像机,然后在地图上鼠标按下,会自动传回当前位置的经纬度信息,然后单击更新设备位置按钮即可,会自动js异步更新执行代码,更新完成以后会自动同步到另外的地图,比如在线地图更新了,离线地图也会自动更新。
地址和经纬度互相转换的功能也经常用到,比如上次的路线方案查询的功能,之前官网是提供了直接输入出发地点和目的地的中文汉字,就可以查询到最优的路线,后面只支持输入出发地点和目的地的经纬度坐标了,这个就有点绕了,让用户输入什么经纬度坐标,那是个什么鬼?没有几个用户搞得懂的,所以就需要先将用户输入的出发地点和目的地的中文汉字先查询到对应的经纬度坐标,然后再传入路线查询的JS函数中查询结果即可,为什么突然关闭了这个地址经纬度自动转换的功能呢?我去后台看了下,原来这项功能变成收费模块了。
虽然很早听过CDN,但对其原理处于模糊的状态。如今国内访问量较高的网站、直播、视频平台,均使用CDN网络加速技术,小编所在项目有使用CDN技术,谨以此篇学习共勉。
行政区划在地图应用中非常有用,行政区划是行政区域划分的简称,是国家为了进行分级管理而实行的区域划分,百度地图提供的内置的函数类支持传入行政区划的名称来获取对应的边界点集合,然后根据该集合来绘制点集合,最后将该点集合封闭连起来,就形成了行政区划的轮廓图了,使用下来发现地图本身提供的函数可以支持到县城,如果需要精确到乡镇那就需要其他办法获得,一种是直接加载事先准备好的乡镇的边界点集合的js文件,一种是在地图上绘制多边形,然后开启可编辑属性,人为的拖动边界,最后获取整个多边形的边界点集合即可,这种方法有个专业术语叫扒数据,在音乐界叫扒带。其实方法一的前提也是按照方法二来获取的,对于很小的应用数量不多的乡镇可以采用此法,如果需要很多省市的乡镇那就可能需要安排专人去获取了。
产品设计时,产品经理往往很少考虑当在弱网环境下(网络连接慢时)或突然网络没有连接时(如进入电梯、地下室或开车进入隧道)与用户怎么交互。
在添加设备点或者区域形状的时候,会考虑是直接静态的方式写入到网页中加载,还是动态js函数异步加载的方式,这个需要根据现场的实际需求来,如果只需要一次加载的话建议静态即可,如果运行期间还需要动态添加的话就采用动态的js函数交互的方法,绝大部分场景都是动态添加,毕竟这个是异步执行的,而且比较灵活,静态的方式写入到网页中加载开起来比较傻,数据都在网页中可以看到了,没有什么保密性可言,在前面两篇文章做行政区划和点聚合的时候,也是两种方法都支持,具体现场怎么方便怎么来。
别人的生活最多撞一下腰,我的生活总是出其不意给我一刀,我说最后一题烧绳子你说时间到了交卷了,我说要躺下你说同志醒醒还有个bug,我说不想再学了你说GIS开发了解一下。
在地图应用的相关项目中,在地图上标识一些设备点,并对点进行交互这个功能用的最多的,于是需要一套机制可以动态的添加、删除、清空、重置,重置的意思是将地图中的所有点的经纬度重新设置,其实就是先清空然后挨个重新添加所有点的信息,JS的异步交互功能非常强大,直接执行对应的JS函数就可以,没有必要刷新网页,最开始很多年前做的时候还不会JS,那时候想的最糟糕的办法就是写死在代码中,这样每次变动需要重新加载网页,后面发现那真是糟糕的办法,既然有异步刷新的办法为何不用呢,自从学会了JS异步刷新方法以后,索性将各种方法都改成了JS函数,传入对应的参数即可,参数尽可能的考虑到已知的各种各样的情况,方便用户自己添加。
gmap构建离线地图,用createCustomerTiledLayer方法,瓦片地址尾部多了 ?x={x}&y={y}&z&{z} 导致无法显示地图。 function initMap(
先上Demo啦~~~~~ 📷 或许你已经使用过了相应多的省市区与地图联动,但是这些联动往往是单向的、不可逆。并且这些数据往往都是在线使用的,不能离线使用。下图是一个结合百度地图的省市区与地图联动: 📷 我们可以在这个应用里选择,相应的省市区然后地图会跳转到相应的地图。当我们在地图上漫游的时候,如果没有显示当前的省市区是不是变得很难使用。于是,我们就来创建一个吧: 📷 相关技术栈: Bootstrap,UI显示~~,地球人都知道。 jQuery,Bootstrap依赖。 Requ
----https://github.com/albar965/littlenavmap----
最常用的地图交互就几个,比如鼠标在地图上按下的时候可以拾取经纬度坐标,然后传给Qt程序,再比如对设置的设备点进行单击的时候,通知Qt程序单击了哪一个设备点,好让Qt程序识别并作出反应比如弹出对应点的详细信息或者视频预览等。让网页执行js函数这种单向的操作,其实无论何种浏览器内核都支持的,并不需要注入类或者添加qwebchannel.js文件之类的,你只需要放心大胆的调用runJavaScript或者evaluateJavaScript函数。而如果想要网页发送对应的数据给Qt程序的话,就需要额外的处理了。
笔者最近在做打车相关的项目,需要用到地图,针对腾讯地图的小白级入门教程比较少,特把跑通地图demo的几个步骤写下来,供新人参考。 简单介绍一下,腾讯地图示例demo有基础地图、定位、地图交互、地图变换、标注、图形绘制、路线规划、检索等功能。在基础地图里有展示地图、地图类型、室内图、海外图、多样式切换、离线地图的功能模块。
时隔一年多,重新对视频监控系统的onvif内核重写,一方面为了兼容Qt6,一方面按功能分类提高效率。整体逻辑思路是一样的,主要的改动是由于Qt6不再支持QtXmlPatterns模块(其实这个模块在Qt5的后面的版本也逐渐提示为废弃模块),onvif协议通信中的数据都是带有命名空间的xml数据,用QtXmlPatterns模块去解析是最合适的,现在全部改成了用最原始最基础的QtXml模块去解析,毕竟QtXml模块肯定是一直在的,这是相当基础的模块,无论以后Qt7还是Qt100肯定都会有。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169492.html原文链接:https://javaforall.cn
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
一位 “技术宅” 自制的自行车码表在 B 站火了,短短几天引来 20 多万人围观!
领取专属 10元无门槛券
手把手带您无忧上云