Mapbox鼠标悬停圈可使用功能状态更改颜色

时间:2018-08-08 21:19:20

标签: mapbox styling

在将鼠标悬停在Mapbox地图上时,使标记改变颜色是一个问题。 Mapbox-gl.js的0.47版本允许您使用const duration = 21600000; batch.update(firestore.collection("place_check_in").doc(checkInId),{expiryTimestamp:admin.firestore.FieldValue.serverTimestamp()+duration}); 来更改动态样式的功能。

这对于Mapbox示例正确运行:https://www.mapbox.com/mapbox-gl-js/example/hover-styles/

但是,在我的示例中,当要素标记的feature-state发生更改时,似乎永远不会触发样式。

我已经成功使用feature-state函数使鼠标悬停,但是当我添加1000个标记时,效率和效率却非常低。

将非常感谢您收到任何提示,谢谢。

请参阅我的示例代码...

map.setFilter

1 个答案:

答案 0 :(得分:3)

要使用setFeatureState,您需要在数据源中的每个功能上设置唯一的ID。因此,实际上,您需要做的就是添加一个ID,如下所示:

map.addSource("sites", {
    "type": "geojson",
    "data": {
      "type": "FeatureCollection",
      "features": [
        {
          "type": "Feature",
          "id": 2,
          "geometry": {
            "type": "Point",
            "coordinates": [
              -0.1407524,
              51.5240731
            ]
          },
          "properties": {
            "id": 2,
            "name": "Oxford Street"
          }
        }
      ]
    }
});

请注意功能上的id属性。将其嵌套在properties中是不够的;它必须在该功能的顶层。该方法的文档应在本周下一个版本发布时进行更新。