使等高线标签指向上坡:线要素上文本标签的反向

Make contour labels point uphill: reverse direction of text label on line feature

我正在 Mapbox Studio 中设计地图,使用 mapbox.mapbox-terrain-v2contour 图层来确定等高线。这是基于 outdoors 风格。

在户外风格中,等高线标签的方向使文本显示在水平方向的 -90° 和 90° 之间,因为设置了 Keep Text Upright。如果我禁用它,那么文本会以任何角度定向。然而,这篇文章的方向与我想要的完全相反:它总是指向下坡,而不是上坡。请参见下面的第一张图片:请注意,数字是直立的,海拔高度从北到南

我的目标是使用 Ordnance Survey style 的方向数字上坡(直立,海拔增加 从南到北 ),如第二张图片下面。

我现在的风格can be seen here。我曾尝试使用 text-rotate 字段,但这会单独旋转每个字符,并且似乎没有反转字符串的功能来抵消这种情况。此外,这围绕每个字母的顶部旋转,这意味着结果与实际轮廓线有偏移,text-translate + text-translate-anchor 似乎无法解决这个问题。

正如您所注意到的,在 symbol 层上使用 text-rotateplacement: line 会单独旋转每个字符。所以你需要反转字符串,这在可用的表达式中是不可能的。

不过。有一种 hacky 解决方法可以为您解决问题。您可以简单地硬编码所有可能的高度及其反转:

["match", ["get", "ele"],
750, "m057",
700, "m007",
650, "m056",
600, "m006",
550, "m055",
500, "m005",
 ""
]

结合 text-offset0,1.5,这实际上看起来不错:

我发布了样式here