本文首先介绍实现地图功能的第一步:获取瓦片地图数据。
瓦片地图原理
读者可以参照文后的链接了解瓦片地图的原理,这里不再重复。简单地说,瓦片地图就是将地图根据缩放层级进行分割,例如缩放层级为3,就表明将地图分为2的3次方行和2的3次方列。知道目标位置的瓦片坐标,就可以获得相应位置的地图数据。
获取地图数据
很多地图服务都提供了使用http协议获取瓦片地图数据的方法。具体可以参照文末的地图瓦片url链接。这里以高德地图为例进行说明:
https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=2&style=8&x=857&y=391&z=10
该链接是通过高德地图获取大连矢量地图信息的URL。其中x是瓦片的横坐标,y是瓦片的纵坐标,z是缩放层级。以下是获得的地图数据:
获取指定位置的瓦片坐标
可以从经纬度计算出瓦片坐标,计算公式和对应的示例代码可以从【Slippy map tilenames】网页获取:
获取地图数据小工具
为了确认算法和方便调试,作者制作了一个excel形式的小工具。使用这个工具,只要输入经度,纬度和缩放测层级就可以计算出瓦片坐标。
这个工具可以从以下链接下载:
https://github.com/xueweiguo/Harmony/blob/master/StopWatch/LocationToTile.xlsx
参考资料
瓦片地图原理:
https://www.jianshu.com/p/e9e83b427045
高德谷歌腾讯天地图地图瓦片url_吴道简的博客:
https://blog.csdn.net/sinat_41310868/article/details/105959659
Slippy map tilenames(包含各种转换示例代码):
https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames