移动端地图技术分享

该小说属于<简书 — 刘小壮>原创,转发请评释:

<简书 — 刘小壮>
http://www.jianshu.com/p/41179be5893a


自家现就职于国内某地图导航集团,那篇文章是自小编前段时间在店铺团队技术分享的二个PPT,小说内容也至关心重视要由那个PPT的剧情为主,通过这篇文章能够很好的帮你领悟地图导航这么些行当的相关技能。

PPT内容主要包蕴地图相关专业知识、百度和高德SDK全部框架、数据来源、行业概览等构成。其中有关地图引擎相关的技能知识,作者向集团地图引擎开发同事求证过,这一个PPT也给她们看过,也辅助提出了内部的片段难点。

那篇文章主要用于分享,当中借使有如何问题,还请多多提出,多谢!


地图开发专业知识

经纬度

经纬度

经纬度是一种地理坐标系统,首要用来代表地球的球面坐标系,经纬度能够稳定地球的其他二个职位。南北方向的号称纬度,东西方向称为经度

纬度:赤道纬度周长最长,离赤道越远纬度周长越短,也就更是设身处地南北极。赤道以南称为南纬,赤道以北称为北纬纬度取值范围是0-90,赤道纬度细微为0,两级最大。

经度:经度也叫子午线,任意两条经线长度相等,发轫点都在南北极。经度以本初子午线为不同,以东称为东经,以西称为西经东经为正数,西经为负数。经度取值范围在0-180,本初子午线为0。东经180度也便是西经180度正是白海峡,亚速海峡就是国际换日线,日期相差一天。

按照经度,地球被分为24个时区,每一种时区又有分,分又饱含秒。

投影

投影

投影

做地图,投影的定义很重庆大学。大家的地球是圈子的,地球的坐标是一个球面坐标,球面坐标是三维坐标(x、y、z),而小编辈的地形图是是二维的(x、y),供给将球面包车型大巴三维坐标转换为平面的二维坐标。

坐标转换久用到了投影的概念,常用的投影有:圆柱投影圆锥投影方位投影,而在大家地图导航中运用墨卡托投影

墨卡托投影

墨卡托投影

百度、高德、Google都使用墨卡托投影墨卡托投影有3个十分大的弊端,便是在高殷度(南纬北纬)地区发生巨大的变形。变形相比严重的地点在于俄罗丝、格林兰岛、南美洲、南极洲等北周明帝度地区。

墨卡托投影

上边四个国家分别是:俄罗斯、澳洲、中中原人民共和国、巴西、加拿大
笔者们将那多少个国家放在二个纬度,来相比那多个国家,发现距离并不太大。但是只要放在上面那张图中,俄罗丝顶好多少个中华夏族民共和国民代表大会大小小。

国外开发者开发了二个网站,这么些网站能够将分歧国家拉到同1个纬度,这时候就能显得出真正比例的国度面积。
网站地址:http://thetruesize.com/

古德投影

古德投影

古德投影能够制止地图变形的题材,这种投影将地图分为多少个部分,然后沿赤道将多少个部分连接在一齐。大家发现上边的格林兰岛已经被分为两部分,那种投影并不适合用于支付,而且看起来效果也不太美观。

金字塔模型

金字塔模型

把一张世先生界地图呈现到手提式有线电话机里是不可能的,所以就引入了金字塔模型的概念(也就是比例尺),大家能够依据分化的缩放比例,突显不一样的分辨率。

在地形图应用中,我们用指头缩放和加大地图,地图呈现大小的变换,都以基于金字塔模型来公司瓦片图的。

瓦片坐标系

瓦片坐标系

金字塔模型相当使用的正是瓦片坐标系,在不相同的缩放等级下,同一块区域瓦片个数也是不等同的。

瓦片更加多就代表这一区域展现越详细,缩放比例也就越大。瓦片坐标系在2D和3D的意况下都会被运用,大家在网络不佳的情形下得以看看地图瓦片的加载进程以及瓦片的大小、位置。

坐标加密
  • CLLocationManager中的经纬度加密(WGS-84)
  • MKMapView中的经纬度加密(GCJ-02)
  • 高德SDK中的经纬度加密(GCJ-02)
  • 百度SDK中的经纬度加密(使用GCJ-02双重加密,叫做BD-09)

依照中夏族民共和国法规规定,地图提供商必须对地图经纬度举办偏移,国测局制定了一套加密标准,正是常用的GCJ-02经纬度坐标加密关键有三种格式,GPS坐标系
(WGS-84) 和土星坐标系 (GCJ-02) ,加密算法是开源的,可以寻找到。

国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理地方进行第1遍加密。由于每家导航SDK提供方加密都不统一,所以百度、高德、谷歌(谷歌(Google))多家地图数据并不联合,要求再行举行更换。

地图定位

地图定位

活动端固定形式首要有三种:GPSWi-Fi基站,但是androidiOS还不太雷同,android能够让用户采取和装置那种定位格局,可是iOS是由系统为大家选用的,我们尚无操作定位方式的权杖。iOS分化意有第1方定位,所以今后地图应用都以对系统定位实行的包裹。假若有GPS信号,iOS系统会事先挑选GPS办法固定,然后是Wi-Fi定位,如果Wi-Fi信号不佳就会选拔基站定位。

在定点中精确度最高的是GoogleGoogle利用大数额解析,记录每1次使用Google地图的固化。下次再一次定位时,直接依照Mac地址等音信进行剖析,进步级中学一年级定精确度。

正如悲催的三个题材就算,有一些比较老的iOS机器,没有GPS一定模块,例如某个老版本iPad,这种装置在并未Wi-Fi的景况下是无能为力稳定的。

地理编码和逆地理编码

示范图片

地理编码:即地精晓析,由详细的结构化地址得到相应的经纬度音讯,例如北京市海淀区中关村南大街27号的地方,就可以获取到3个唯一的中纬度消息。

逆地理编码:即逆地明白析,由叁个经纬度消息获得三个结构化地址音讯,例如lng:116.31985,lat:39.959836经纬度,就足以博得到类似于地点的地理音讯。

iOS系统API、高德SDK、百度SDK中,都为大家提供了地理编码逆地理编码API,不过急需留意经纬度的变换,不相同地图SDK重回的经纬度加密方法各异,大家在传唱经纬度参数和吸收接纳经纬度参数时,都急需做转换。

地图数据出自

高德

四维图新

国内比较活跃的多少采集商首即使高德和四维图新两家,百度绝非数量搜集资质(近日收购了道道通),所以数据首要借助于四维图新。

四维图新和国家测量绘制局合作相比较密切,数据来源于至关心珍惜若是国家测量绘制局提供,也有一对本身测量绘制的数目。高德测量绘制和航空拍戏能力还不易,首要自个儿测量绘制数据,部分数据也凭借国测局提供。数据测量绘制单位相互之间都有合作,会相互购买本身从不的多寡。

在中华,谷歌(Google)地图或苹果地图等地图开发商,数据来源大约都是那两家合营社。

POI数据

POI

POI数据是一种矢量数据,包含好吃的食品、商店、银行、加油站等都以POI数据,在地形图上一般都以气泡或大头针表示。

多少收集能够透过车载(An on-board)GPS录像机采集,或从服务性网络集团抓取或购买销售,由于百度和高德提供了对外的SDK,通过用户接纳地图SDK也得以拿走一些数码。

百度的地图数据首要依赖于四维图新和道道通,高德地图首要以自采为主。一般这一个数据也会和公众点评、携程、口碑等网络服务商购买,相互之间也会购买销售POI数据。

栅格-2D地图

珊格图

珊格图

2D现象:轻地图应用,简单的职位分享、兴趣点标注、线路展示等。2D模型显示效果不太好,在缩放比例较小的情景下,看起来相比较模糊(缩放比例大学一年级部分看起来清晰度还是能)。

栅格模型对此某3个地点的讲述,是透过广大层图片叠加组成的,每层代表差别消息(例如道路)。栅格模型一般都会先渲染二个底图,然后是在底图的基本功上叠加路况、POI等图层。

珊格图都以在服务器预处理的图样,从服务器下载处理好的图片到地面开始展览拼接即可,由于下载到本地是图片,本地不可能再对图层举行变更。对于质量上的话,服务器进行图片合成质量消耗较大,不过客户端品质消耗相比较小,内部存款和储蓄器占用也相比小,用起来会相比流利。

矢量-3D地图

矢量地图

矢量地图

3D场景:重地图应用,以LBS为骨干职能,须要离线地图、更好的渲染效果、app内导航的。比如打车应用、出游导航类应用,3D模型渲染后的效益比较好,一般选择导航效用都不能够不用这么些3D模型

矢量数据是从服务器将地图数据下载下来,然后在客户端实行合成绘制的,所以大家能够对地图的呈现举行控制,可定制性更强。矢量图看起来更佳清晰,渲染效果相比好。不过矢量图对手提式有线电话机性格消耗十分的厉害,手提式有线话机内部存款和储蓄器占用比较高,CPUGPU费用都一点都不小。对于服务器质量消耗就比2D场景性格小部分,因为服务器只是加载原始数据和向客户端实行传输,将合成绘制等那一个图层渲染的绘图处理交给客户端来做。提升了客户端灵活性和更好的职能,就义了客户端的习性,有利有弊。

三维地图

三维地图

三维地图是以三维地图数据为底蕴开发的,三维地图看起来更佳立体化,地图上得以展现出立体建筑及影子的机能,而且地图随着用户的操作,楼宇的角度、阴影等功效也会随着爆发变化。

三维地图对接进程中,也应运而生过假三维地图。那种地图只好进行平面平移,不可能拓展旋转操作,是数据平面地图三维地图连通的产物。

外国地图

外国地图

百度地图近来早已能够支撑部分国家的国外地图服务,例如新加坡共和国、韩国、东瀛、泰王国等国家。能够在新式的百度地图app上直接查看、搜索那几个国家的局地POI,以及采纳导航等成效。

近来甘休唯有百度一家支撑国外市图服务,高德一时不辅助那项服务。在百度和高德不帮忙的地方,由于服务器并未多少,所以不会做渲染,看起来白白的一片。

实景地图

实景地图

实景地图最初阶是Google研发的,那项技能须要软件和硬件互相的合营,以及多量的数据处理才能不负众望。

募集实景要求各式实景采集工具,包罗小车采集、自行车采集、人力采集等,那根本是由于必要应对各个采集地点。采集时将数据实时绑定GPS职务,那样就领悟是在哪个地方采集的。

数据搜集后要求工程师将数据举办复杂处理,才能形成大家看看的实景数据。实景数据诚如都以静态的,而且不是实时更新的。实景数据为了维护被采集人的用户隐衷,供给对关键部位进行模糊处理,例如脸、车牌照等。

室内地图

室各省图

室内定位是一种组成3D定位的定势格局,那种稳定能够在室内进行稳定。室钦点位一贯定位某些商铺在几楼的某些地点,而且能够选拔楼层。

在价值观的固化中,楼内由于是多层,会促成定位重叠的题材,而且楼内GPS信号也不太好甚至没有。所以现身了部分新技巧来兑现楼内定位:AGPS(辅助举世卫星定位系统)、Wi-Fi指纹定位、zigbee芯片定位、RFID智能标签技术、以及苹果推出的ibeacon,在那之中高德使用的是Wi-Fi指纹定位技术。

百度热力图

百度热力图

首先是由百度率先扶助热力图功能,热力图效能预示着大数量时期尤其近。热力图是依照百度地图移动客户端和SDK在那么些地区的行使景况测算出来的,这么些估计数据足以是网络请求、打开次数等,通过这么些数量推测出人士分布。通过在此之前百度在CCTV的通信来看,通过那几个数据还是能预测景区人山人海,幸免大型踩踏等群众体育性事件。

热力图乘势同一区域的凝聚程度变化,颜色随之变深。不过由于总结方法的性状,计算的数量并不太标准,例如白天和夜间就有相当的大区别,只是当作参考。


地图SDK架构

高德SDK结构

高德SDK结构

Annotation:单点标注,继承自UIView,能够选用UIView的一部分基础属性,引入了录取机制(百度也是均等的落到实处,包含一些打车软件的手推车,都以运用Annotation实现)。

Overlay:多点标注,引擎直接渲染,可以通过SDK的API自定义UI,多点标注用于标识路线或某一个区域。

Other:云搜索,地理编码和逆地理编码,导航行路线径设计,定位,POI搜索等。

MapKit和高德SDK区别

对比

左侧图片的高德logo是大青,并且出示在右下角,那是iOS系统的MapKit.framework

左侧图片的高德logo是湖蓝,并且出示在左下角,这是高德本身的SDK。

苹果的MapKit只是使用了高德的数目,可是API是苹果自身开销的。

百度地图SDK框架

百度地图SDK框架

跨平台引擎:
  • 百度地图的地形图引擎使用openGLES绘制
  • 能够运营于支撑C++的手机系统平台
  • 不相同平台对应用层保持一致的API接口
  • 提供能够知足应用层的根底数据结构
  • 尽量少的注重系统接口,提升可移植性
  • 圆滑和可增加性

百度地图对于高德地图来说,增添了一些实用性的成效,例如热力图、出游、个性化地图等。那几个意义都以高德所没有的,当然高德也有一部分很正确的意义,两者各有长处。

百度地图和高德地图都有2D和3D效率,2D纯平面展示,没有楼宇拔高效果。

百度地图SDK框架

百度地图SDK框架

百度SDK首要模块划分:

  • 地图(基础效能,地图展现以及操作和种种覆盖物图层)
  • 检索(POI,地理编码、路径设计等)
  • 永恒(提供单身稳定模块,经纬度依据国测局二次加密)
  • 工具(调用百度客户端,坐标转换等)
  • 常见雷达(检索用户新闻,查找附近的人,主要用来社交)
  • LBS云(区域搜索,百度服务器存储数据,能够协调操作,属于开发者自有数量)

百度SDK分为两个大的模块,能够遵从须要下载对应的模块,那样使下载下来的SDK体积变小。

百度鉴权认证策略:用户能够因而二种情势与百度绽放云举办互动,包含认证方式匿名方式。在SDK中众多地方都用到了鉴权认证,例如加载地图时证实不通过不会来得地图,百度比较推崇SDK的鉴权

图层渲染

图层渲染

百度地图渲染分为八个图层渲染,各样图层渲染的对象也分裂,地图上自定义标注和遮住物统称为地图覆盖物,多少个图层叠加起来形成矢量图。百度地图SDK地图等级近日为19级,可以依照缩放等级的不等渲染建筑物、道路、河流、学校、公园等剧情。

百度地图帮助多点触摸、双击放大、多点减少、旋转等手势操作。并且帮忙画点、折线、圆、多边形等操作,并且能够自定义热力图瓦片图等。

百度天性化地图

百度天性化地图

百度地图在16年6月份出产了个性化地图,SDK提供了性情化地图模版,通过地图模版更改底图颜色和样式。从百度开发者平台下载到模版,通过地图模版能够修改本地、水系、草地、道路、铁路、地铁、POI等颜色和样式,然后调用SDK提供的格局读取该模版即可。


地图产业链

地图产业链

龙精虎猛总括

首先张图是一份14年的总结报告,那份总计报告总结不太完善,部分导航应用尚未被含有在内。

在那份总结报告中,我们发现高德是绝无仅有1个覆盖整条产业链的商行,在产业链的各样环节都设有高德的人影。

二〇一六年十二月,Ali对高德完毕了15亿比索的收购,高德成为Ali旗下全资子企业。

相关文章