gpt4 book ai didi

mapbox-gl-js - 在 map 中组合多个 Style

转载 作者:行者123 更新时间:2023-12-05 07:15:04 26 4
gpt4 key购买 nike

这是我想要实现的目标:我想在一张 map 中组合多个样式(由用户在 Mapbox Studio 中构建的 map )。

假设我们有一个带有一些基础图层和图 block 集的样式,以及另一个只有一个图 block 集但具有颜色和其他样式配置的样式,我想在我的 map 中动态组合它们。

我尝试过的

  1. 我使用 setStyle 添加第一个样式
  2. 向 Styles API 发出请求并获取第二个 Style json
  3. 迭代第二个 Style 的源并使用 addSource(重命名以避免冲突)将它们添加到 map 中
  4. 遍历第二个 Style 的图层并将它们添加到 map 中使用 addLayer

它非常有效,我只遇到使用“文本字段”并要求样式具有“字形”属性的图层的错误。

然后我尝试动态更改 map 样式的“字形”属性,但没有成功。错误仍然存​​在。

错误:“layers.state-label.layout.text-field:使用“text-field”需要样式“glyphs”属性”

为什么我不添加 tilesets 呢?

因为我想获得样式中存在的所有布局选项。

为什么我没有打开有关如何动态更改字形的问题?

虽然这是我现在面临的具体问题,但我愿意就一般方法获得反馈。

这是可行的吗?我是否应该考虑在 map 中组合多种样式是个好主意?有更好的方法吗?

提前致谢。

狮子座

最佳答案

您的方法听起来总体不错,但有几个主要的注意事项,您已经发现:

  1. 一个样式只能有一个字体字形
  2. 一个样式只能有一个图标 Sprite

如果两者都托管在 Studio 上的同一用户帐户下,我认为它可能有效,至少对于字体而言。但从你的错误来看,情况并非如此。

那你能做什么?您将不得不从一种样式中选择字体字形,然后更新另一种样式中的每个图层以使用该样式中存在的字体。我认为这在一般情况下很难做到(我不知道如何找出字形中存在的字体),因此最安全的选择可能是创建一个新的字体字形并将每个字体重新映射到它。

FWIW,这里已经跟踪了这个一般问题:https://github.com/mapbox/mapbox-gl-js/issues/4225

关于mapbox-gl-js - 在 map 中组合多个 Style,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59738350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com