做地图有段时间了,值得欣慰的是,终于有人意识到了「离线地图」文字上的猫腻了。
先直接解答题主的疑惑:
1、 即使下载了「离线地图」,大多数地图APP在正常使用过程中依然会消耗流量。
2、 完全不消耗流量的地图APP(即「零流量地图」)是完全可以实现的。
要详细解释这个问题,需要搞清楚手机离线地图的发展的几个时代:
一、「先下再用」时代
早期的手机地图,必须先下载从几百MB到几G容量不等的地图数据包,然后配合导航应用使用。用过塞班手机的同学应该还记得著名的R66导航吧?当时就是这么用的。
印象中,那时的地图,等同于400 MB左右客户端 + 1G以上地图包 + 零流量(GPS定位时)。
二、「即需即下」时代
所谓「离线地图」,只相当于一张画满了建筑和道路的图层,由于平常人去的地方非常有限,没必要预置全世界的地图图层在手机中(会占据大量手机容量),因此部分地图APP采用了全在线地图的方式,「即需即下」,Goolge Map就是如此。在网络通畅、流量便宜的地区,这种服务非常方便。
看了早期的Google Map for Android,客户端15 MB,因为要下载图层,流量消耗没有上限,根据使用情况而定。
三、「离线地图」时代
由于每次都需要加载图层、流量消耗较大,工程师发现:与其每次下载图层文件,不如把一些常去地的图层做成大小能接受的数据包(即离线地图包),供用户在wifi等流量不敏感的环境下下载,这样使用地图时,就不用消耗读取图层所需要的流量了。「提前预知所需,先下再用」,百度、高德地图都是这个思路。
在制作离线地图包的过程中,工程师花了不少心思在减少地图包的大小上,比如通过矢量绘制等方法。目前主流的地图APP已经把城市地图包压缩在几十MB大小。
比如百度地图 for iOS,客户端46 MB,北京市18.6 MB地图包,根据搜索、导航、定位的使用情况,耗费几百KB到数MB不等的流量。
四、「零流量地图」时代
随着LBS服务的兴起、人们出行需求日益增多,用户又提出了新的问题:为何我下载了离线地图,定位、搜索地点、规划路线还需要联网?随着网络变化,地图部分服务的速度也会受到影响,这个有办法解决吗?
其实,地图定位分为GPS卫星定位和基站定位:在户外卫星信号较好时,采用GPS卫星定位,室内等卫星信号不好的地方,则通过手机接收到的基站或wifi信号,采用了多源融合及指纹等方式进行定位。后者需要耗费少许流量。同时,搜索地点、规划路线因为涉及到云端算法,必须请求到云端才能返回相应结果,该步骤也需要联网、消耗流量。
为了尽可能节省流量,工程师们再次脑洞大开:手机地图的使用场景主要是在室外,如果只通过GPS定位,关掉基站定位,同时把搜索、路线规划等服务从云端搬到手机上,不就解决了流量耗费的问题了嘛(当然室内定位时需要借助wifi或基站)?同时,由于运算都是在手机上进行,不需要去云端请求结果,等待时间也减少了很多。
事实上,这样做还得克服一堆困难——比如说,如何保证云端复杂的服务迁移到手机本机时,能够高效并且占用更少的资源?
工程师们再一次给出了解决办法:在选择合适的数据结构和算法后,采用漏洞模型只加载必要的数据,同时合理设计缓存、提升运行速度,并且提前做大量离线计算、存储中间结果。这也是为何部分地图存在「离线导航包」的原因。
在这个过程中,「提前做离线计算、存储中间结果」是非常有必要的:在离线公交路线的计算过程中,很多中间计算信息是固定不变、可以提前算好的,因此可以存储成中间数据。为了不让中间数据过大导致离线地图包太大,对这些数据做合理压缩,便可大大提升运行效率。比如目前,全北京公交离线数据,也只要8MB。
搭车做个我厂的广告:目前市面上的覆盖主流平台的零流量手机地图,只有腾讯地图一家,最新的iOS版本20MB左右客户端 ,北京市离线地图包+导航包约100MB 。使用时若全程开启零流量模式,除了部分GPS信号覆盖不到的地方可能需要耗费几Byte的流量进行定位 ,离线搜索、离线公交、离线步行规划、离线驾车导航都可看成是不消耗任何流量。
谢谢评论中的朋友提醒:WP平台的Here地图也支持零流量功能,这里为自己的无知道歉。
五、可预期的未来
技术永无止境,手机离线地图的发展,也许还有几个值得期待的方向:
1、 地图包增量更新:城市发展日新月异,地图底图的更新也愈发频繁,但是总不能每次都下载完整的地图包吧?通过增量更新,可以让用户只更新增加的数据部分,可以想见,未来不用在WIFI网络下,都可以通过极少的流量获得最新的地图数据。
2、 离线街景地图:相比虚拟图层,人们可能更倾向于在街景照片中查看路口、参照建筑物,随着图片数据压缩技术、手机硬件技术的提升,未来可能在离线数据包中,就能看到关键路径上的街景参照物。
一孔之见,希望能抛砖引玉。
利益相关:本人腾讯员工。
— 完 —
本文作者:贺滨
【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)
此问题还有 39 个回答,查看全部。
延伸阅读:
我为什么找不到谷歌地图 (Google Maps) 手机版的离线地图?
有哪些电子地图可以离线使用?