javascript - 圆半径的 Mapbox setPaintProperty 未更新图层

标签 javascript mapbox-gl-js

我有一个 Mapbox 圆形图层,我需要更改圆形的半径,但 setPaintProperty 方法似乎不起作用。该图层最初显示:

map.addLayer({
        "id": "circleCurrentGpsCircle",
        "type": "circle",
        "source": "source_circleCurrentGpsCircle",
        "paint": {
          "circle-radius": {
            stops: [
              [0, 0],
              [22, metersToPixelsAtMaxZoom(gpsAccuracyWidth, currentLatitude)]
            ],
            base: 2
          },
          "circle-color": self.props.senData.gpsCircleShading ? "#FFFF00" : "transparent",
          "circle-opacity": 0.3,
          "circle-stroke-width": 3,
          "circle-stroke-color": "#FFFF00"
        }
      });

然后我调用以下命令来更改圆的半径:

var radiusData = {
        stops: [
          [0, 0],
          [22, metersToPixelsAtMaxZoom(gpsAccuracyWidth, currentLatitude)]
        ],
        base: 2
      };
      this.map.getLayer('circleCurrentGpsCircle').setPaintProperty('circle-radius', radiusData);

但圆圈并没有改变。我在控制台中没有收到任何错误。

最佳答案

通常,人们会在 map 对象本身而不是图层上调用 setPaintProperty:

this.map.setPaintProperty('circleCurrentGpsCircle', '圆半径', radiusData);

我从未注意到返回的图层对象上的 setPaintProperty() 方法,但在我的简短测试中,它似乎对我也不起作用。

(实际上,经过一些进一步的测试,似乎通过该函数设置的值确实被记录在某处,并且当您稍后调用 map.setPaintProperty() 时,所有这些值现在都会显示出来。但这对你没有帮助 - 只需将行更改为我上面提供的内容即可。)

关于javascript - 圆半径的 Mapbox setPaintProperty 未更新图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57152742/

相关文章:

javascript - 拉伸(stretch)背景渐变高度为 : 100% on html

properties - 基于 TEXT 属性的 mapbox 图层填充颜色

javascript - Mapbox GL - 无法通过缩放功能设置可见性

javascript - 为什么 Mapbox 给我 'o.createObjectURL is not a function' 错误?

javascript - 与自定义路由 react (在 Symfony 后端)

javascript - Meteor JS 共享方法和对象

javascript - 如何将 SQLite 本地数据库连接到 HTML 前端?

javascript - 使正数评估为真,负数评估为假

Mapbox 图标/标记 "BearingSnap"或对齐位置

javascript - 在 mapbox-gl-js 中刷新单个矢量切片 zoomlayer 的解决方法是什么?