本文首先介绍实现地图功能的第一步:获取瓦片地图数据。

瓦片地图原理

读者可以参照文后的链接了解瓦片地图的原理,这里不再重复。简单地说,瓦片地图就是将地图根据缩放层级进行分割,例如缩放层级为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是缩放层级。以下是获得的地图数据:

自学HarmonyOS应用开发(50)- 获取瓦片地图数据_瓦片

获取指定位置的瓦片坐标

可以从经纬度计算出瓦片坐标,计算公式和对应的示例代码可以从【Slippy map tilenames】网页获取:

自学HarmonyOS应用开发(50)- 获取瓦片地图数据_鸿蒙_02

获取地图数据小工具

为了确认算法和方便调试,作者制作了一个excel形式的小工具。使用这个工具,只要输入经度,纬度和缩放测层级就可以计算出瓦片坐标。

自学HarmonyOS应用开发(50)- 获取瓦片地图数据_地图_03

这个工具可以从以下链接下载:

​https://github.com/xueweiguo/Harmony/blob/master/StopWatch/LocationToTile.xlsx​

参考资料

瓦片地图原理:

​https://www.jianshu.com/p/e9e83b427045​

高德谷歌腾讯天地图地图瓦片url_吴道简的博客

Slippy map tilenames(包含各种转换示例代码):

​https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames​

作者著作介绍

​《实战Python设计模式》​​是作者去年3月份出版的技术书籍,该书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

自学HarmonyOS应用开发(50)- 获取瓦片地图数据_地图_04

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。


觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

自学HarmonyOS应用开发(50)- 获取瓦片地图数据_数据_05