在将鼠标悬停在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
答案 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
中是不够的;它必须在该功能的顶层。该方法的文档应在本周下一个版本发布时进行更新。