QT QML - 更改 Mapbox 字体大小
QT QML - Changing Mapbox font size
我正在使用带有 MapboxGl 插件的 QT 5.12.4,我正在尝试弄清楚如何使街道名称以更大的字体显示,但我对如何指定文本大小感到非常困惑。我需要动态更改大小,因此使用预定义样式将无法满足要求。
两个令人困惑的方面是 Mapbox 的文档必须翻译成 "MapParameters" 用于 QML,而我对更改文本大小到底需要什么一无所知。在阅读文档和使用 mapbox studio 之间,我似乎需要修改 "road-label" 层。如果有人有一些关于如何更改文本大小的示例代码,如果您能分享,我将不胜感激。
https://docs.mapbox.com/mapbox-gl-js/style-spec/#layout-symbol-text-size
MapParameter
{
type: "layout"
property var layer: "road-label"
property var textSize: 20
}
你所做的看起来是正确的。您需要定义类型为 layout
的 MapParameter
,因为 text-size
是 Mapbox 样式规范中的布局 属性。我们不能在 QML 变量名上使用 -
,所以我们将其驼峰命名为 textSize
。之后你可以绑定 textSize
到你想要的任何东西。
您需要确保在添加 MapParameter
时样式上存在图层 road-label
。
我解决了问题,关键是为我使用的预定义样式 (navigation-preview-day-v2) 获取 JSON。 post 向我展示了如何获得预定义的样式:
对于 navigation-preview-day-v2 样式,URL 将是:
https://api.mapbox.com/styles/v1/mapbox/navigation-preview-day-v2?access_token=(your 令牌在这里)
运行 JSON 通过格式化程序,以便您可以读取它并找到呈现街道名称的图层。本例中有四层:
- 路标小
- 中等道路标签
- 路标大
- 道路标签特大
这里是如何在 QML 中为字体大小形成 MapParameter 的示例:
MapParameter
{
type: "layout"
property var layer: "road-label-large"
property var textSize:
{
"base": 1,
"stops":
[
[9, 10],
[20, 16]
]
}
}
您还可以将 JSON 导入 Mapbox Studio 以查看或操作样式。在我的例子中,我想动态缩放字体大小,所以在我的 QML 中我添加了一个比例因子,结果 MapParameter 是:
MapParameter
{
type: "layout"
property var layer: "road-label-large"
property var textSize:
{
"base": 1,
"stops":
[
[9, Math.floor(10 * fontScaleFactor)],
[20, Math.floor(16 * fontScaleFactor)]
]
}
}
我正在使用带有 MapboxGl 插件的 QT 5.12.4,我正在尝试弄清楚如何使街道名称以更大的字体显示,但我对如何指定文本大小感到非常困惑。我需要动态更改大小,因此使用预定义样式将无法满足要求。
两个令人困惑的方面是 Mapbox 的文档必须翻译成 "MapParameters" 用于 QML,而我对更改文本大小到底需要什么一无所知。在阅读文档和使用 mapbox studio 之间,我似乎需要修改 "road-label" 层。如果有人有一些关于如何更改文本大小的示例代码,如果您能分享,我将不胜感激。
https://docs.mapbox.com/mapbox-gl-js/style-spec/#layout-symbol-text-size
MapParameter
{
type: "layout"
property var layer: "road-label"
property var textSize: 20
}
你所做的看起来是正确的。您需要定义类型为 layout
的 MapParameter
,因为 text-size
是 Mapbox 样式规范中的布局 属性。我们不能在 QML 变量名上使用 -
,所以我们将其驼峰命名为 textSize
。之后你可以绑定 textSize
到你想要的任何东西。
您需要确保在添加 MapParameter
时样式上存在图层 road-label
。
我解决了问题,关键是为我使用的预定义样式 (navigation-preview-day-v2) 获取 JSON。 post 向我展示了如何获得预定义的样式:
对于 navigation-preview-day-v2 样式,URL 将是: https://api.mapbox.com/styles/v1/mapbox/navigation-preview-day-v2?access_token=(your 令牌在这里)
运行 JSON 通过格式化程序,以便您可以读取它并找到呈现街道名称的图层。本例中有四层:
- 路标小
- 中等道路标签
- 路标大
- 道路标签特大
这里是如何在 QML 中为字体大小形成 MapParameter 的示例:
MapParameter { type: "layout" property var layer: "road-label-large" property var textSize: { "base": 1, "stops": [ [9, 10], [20, 16] ] } }
您还可以将 JSON 导入 Mapbox Studio 以查看或操作样式。在我的例子中,我想动态缩放字体大小,所以在我的 QML 中我添加了一个比例因子,结果 MapParameter 是:
MapParameter { type: "layout" property var layer: "road-label-large" property var textSize: { "base": 1, "stops": [ [9, Math.floor(10 * fontScaleFactor)], [20, Math.floor(16 * fontScaleFactor)] ] } }