【问题标题】:QT QML - Changing Mapbox font sizeQT QML - 更改 Mapbox 字体大小
【发布时间】:2019-12-22 16:30:05
【问题描述】:

我正在使用带有 MapboxGl 插件的 QT 5.12.4,我正在尝试弄清楚如何使街道名称以更大的字体显示,但我对如何指定文本大小感到非常困惑。我需要动态更改大小,因此使用预定义样式无法满足要求。

两个令人困惑的方面是 Mapbox 的文档必须被翻译成 QML 的“MapParameters”,而我不知道究竟需要什么来更改文本大小。在阅读文档和使用 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
  }

【问题讨论】:

    标签: qt qml mapbox


    【解决方案1】:

    你所做的看起来是正确的。您需要使用 layout 类型定义 MapParameter,因为 text-size 是 Mapbox 样式规范中的布局属性。我们不能在 QML 变量名上使用-,所以我们将它的驼峰式命名为textSize。之后,您可以将textSize 绑定到您想要的任何东西。

    您需要确保在添加MapParameter 时样式上存在图层road-label

    【讨论】:

      【解决方案2】:

      我解决了这个问题,关键是获取我正在使用的预定义样式的 JSON (navigation-preview-day-v2)。这篇文章向我展示了如何获得预定义的样式:

      URL for Mapbox style sheet JSON

      对于 navigation-preview-day-v2 样式,URL 为: https://api.mapbox.com/styles/v1/mapbox/navigation-preview-day-v2?access_token=(your这里的令牌)

      通过格式化程序运行 JSON,以便您可以读取它并找到呈现街道名称的图层。在这种情况下,有四层:

      • 道路标签小
      • 道路标签介质
      • road-label-large
      • road-label-extra-large

      这是一个如何在 QML 中为字体大小形成 MapParameter 的示例:

      地图参数 { 类型:“布局” 属性 var 层:“道路标签大” 属性变量文本大小: { “基地”:1, “停止”: [ [9, 10], [20, 16] ] } }

      您还可以将 JSON 导入 Mapbox Studio 以查看或操作样式。在我的情况下,我想动态缩放字体大小,所以在我的 QML 中我添加了一个比例因子,结果 MapParameter 是:

      地图参数 { 类型:“布局” 属性 var 层:“道路标签大” 属性变量文本大小: { “基地”:1, “停止”: [ [9, Math.floor(10 * fontScaleFactor)], [20, Math.floor(16 * fontScaleFactor)] ] } }

      【讨论】:

        猜你喜欢
        • 2014-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-22
        相关资源
        最近更新 更多