Flutter map瓦片加载及计算原理

前阵子做地图的离线功能时,需要按显示区域下载地图区块的Tiles图片,所以对Flutter_map的Tiles加载逻辑进行了一番研究。在此,特地整理一下。

在这里,先复习一下两个小学地理学的概念吧。

纬度和经度

如果将世界想象成一个围绕其轴自旋转的球体,那么北极位于最顶部,南极位于最底部,赤道则是围绕在其中间的一个假象线。

沿着赤道南北两边,画出许多和赤道平行的圆圈,叫做“纬圈”;同理,从北极到南极点也可以画出许多与赤道垂直的圆圈,叫做“经圈”。

graticule.png

而纬度可以简单理解成与赤道形成的夹角,处于赤道为0°,赤道以北的纬度叫北纬N,以南的纬度叫南纬S,南或北极点最高为90°。经度则是从本初子午线(格林尼治天文台的经线)开始测量的角度,以东叫东经E,以西叫西经W。

经度和纬度最大的区别在于,纬度在球体上距离始终相等,但经度的线在赤道距离最远,在两极靠的更近。

latitude_longitude.png

墨卡托投影

将3D地球上的点转换为2D平面的方法称为地图投影,而Flutter_map采用的是Google Maps的墨卡托地图投影,选择墨卡托投影最大的好处在于南北方向是直上直下的,东西方向也是左右直线的,而不是像其他投影一样,会随着移动偏离或者弯曲地图。墨卡托投影最大的缺点在于,距离赤道越远,国家的规模大小会被严重扭曲。

试想一下你剥橘子皮的场景,结合下图,应该就能理解我表述的意思了。可以看到,如果将地图铺平,越靠近南北两

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值