【发布时间】:2020-03-26 17:24:20
【问题描述】:
我使用 Mapbox Studio 作为映射和样式的基础,然后使用 HTML 来获得其他地图功能。
其中一项功能是在悬停或鼠标进入时更改图标不透明度。当您直接在 HTML 中创建它时,我已经检查了其他示例和所有其他引用功能。我设法改变了不透明度,但只针对整个图层。
我能否以某种方式使用 e.features[0] 命令行将更改仅应用于一个功能而不是整个图层?
我使用此代码更改了整个图层“图标”的不透明度(图层包含 5 个带有文本的图标):
// Change the cursor to a default and change opacity when the it enters a feature in the 'Icons' layer.
map.on('mouseenter', 'Icons', function() {
map.getCanvas().style.cursor = 'default';
var feature = e.features[0];
map.setPaintProperty('Icons', 'icon-opacity', 0.5);
});
// Change it back to a pointer and reset opacity when it leaves.
map.on('mouseleave', 'Icons', function() {
map.getCanvas().style.cursor = '',
map.setPaintProperty('Icons', 'icon-opacity', 1);
});
谢谢!!!
【问题讨论】:
-
您应该阅读样式规范中的表达式。您可以使用它们根据要素属性更改显示属性。 docs.mapbox.com/mapbox-gl-js/style-spec/expressions
标签: mapbox mouseover mapbox-gl-js mapbox-studio