对 OSM 中的 Landuse 标签的一些个人思考

根据 OSM 官方 WIKI 对 Landuse 的解释,Landuse 标签是用于描述「人类使用这片土地的具体用途」。(偏个题,对于使用的自然土地,应该使用 Natural 标签)。

我的绘图习惯是不同的 Landuse 之间保留一定的间隙,这样可以为以后的修改提供方便。

不同 Landuse 之间保留一定的间隙

但在阅读了 OSM WIKI 对 Landuse 的定义后,我觉得我之前的画法并不严谨。不同用途的土地之间,不应该有无法描述用途的地带。不同的 Landuse 之间应该无缝密铺(如右图)才比较科学。

不同 Landuse 之间不保留间隙

为了求证 Landuse 的正确画法,我随机浏览了伦敦和东京的部分区域,但是发现似乎大家都不太爱画 Landuse。。不过在东京的部分地方,我看到了部分 Landuse 的密铺画法。

OSM 群 的小伙伴们讨论了下这个问题,有位同学提出来的观点我觉得比较有道理。

我决定切换到这种画法,并对我之前画的一些 Landuse 进行修正。

修正前
修正后

最后,引用 OSM 中文维基 首页的一段话

寰宇漫漫,从行星尺度的海洋与山川,到你家附近的小巷和便利店,当它们被记录在册,就成了探索者的指向标。从《坤舆万国全图》到如今详尽的电子地图,使用地图越来越便利。

但是,大多数你认为是免费的地图,在实际使用中都有法律或者技术上的限制。这阻碍了地理信息的的高效使用与自由分享。

OpenStreetMap 是一个开放的平台,由志愿者提供开源的地理数据。你可以自由地,创造性地去使用这些数据。

动态形态的应用

动态形态是 iOS 7 开始引入的,有了这个功能,允许使用者自定义 App 文字的大小来满足他们的需要。不过,只有采用了动态形态的 App 的文字才能跟着设置变化。

相关知识可以参考 Apple 的人机界面指南 ( Apple’s Human Interface Guidelines)

对于一般的标签,只需要用系统内置的 「Text Style」来代替固定的字体设置即可。

但是在设置为动态字体后,由于 Label 的默认行数是1行,有些 Label 的内容在放大后会显示不下。就会出现被省略号隐藏并截断的情况。

这时候需要对 Label 的 numberOfLines 进行设置。不设置的话,默认为 1。即为规定为 1 行文本。设置为 0 则为无限制。

可以在 TableViewCell 中的变量定义中插入如下代码

    @IBOutlet var locationLabel: UILabel!{
        didSet {
            locationLabel.numberOfLines = 0
            
        }
    }

如果 Label 是在 Cell 里,那么就得对 Cell 开启动态高度。

经过这样的设置后,App 就可以动态适应不同的字体大小了。