前阵子做地图的离线功能时,需要按显示区域下载地图区块的Tiles图片,所以对Flutter_map的Tiles加载逻辑进行了一番研究。在此,特地整理一下。
在这里,先复习一下两个小学地理学的概念吧。
纬度和经度
如果将世界想象成一个围绕其轴自旋转的球体,那么北极位于最顶部,南极位于最底部,赤道则是围绕在其中间的一个假象线。
沿着赤道南北两边,画出许多和赤道平行的圆圈,叫做“纬圈”;同理,从北极到南极点也可以画出许多与赤道垂直的圆圈,叫做“经圈”。

而纬度可以简单理解成与赤道形成的夹角,处于赤道为0°,赤道以北的纬度叫北纬N,以南的纬度叫南纬S,南或北极点最高为90°。经度则是从本初子午线(格林尼治天文台的经线)开始测量的角度,以东叫东经E,以西叫西经W。
经度和纬度最大的区别在于,纬度在球体上距离始终相等,但经度的线在赤道距离最远,在两极靠的更近。

墨卡托投影
将3D地球上的点转换为2D平面的方法称为地图投影,而Flutter_map采用的是Google Maps的墨卡托地图投影,选择墨卡托投影最大的好处在于南北方向是直上直下的,东西方向也是左右直线的,而不是像其他投影一样,会随着移动偏离或者弯曲地图。墨卡托投影最大的缺点在于,距离赤道越远,国家的规模大小会被严重扭曲。
试想一下你剥橘子皮的场景,结合下图,应该就能理解我表述的意思了。可以看到,如果将地图铺平,越靠近南北两


2637

被折叠的 条评论
为什么被折叠?



