Javascript 如何使用mapbox gl为要素点设置单独的布局特性?
我有一个要素点数组,不想单独更新每个要素点上的一些布局属性。我该怎么做 这就是我目前所拥有的Javascript 如何使用mapbox gl为要素点设置单独的布局特性?,javascript,mapbox,mapbox-gl-js,mapbox-gl,Javascript,Mapbox,Mapbox Gl Js,Mapbox Gl,我有一个要素点数组,不想单独更新每个要素点上的一些布局属性。我该怎么做 这就是我目前所拥有的 const features = getVisibleFeatures(); // This updates all. Not what I wan't. Each feature should have different offset. map.setLayoutProperty("ports", "text-offset", [5, 5]); 根据各个值,
const features = getVisibleFeatures();
// This updates all. Not what I wan't. Each feature should have different offset.
map.setLayoutProperty("ports", "text-offset", [5, 5]);
根据各个值,每个功能都应该有自己的文本偏移量
。我如何做到这一点
更新
@steve bennett在下面的评论中提供了一些很好的建议,但不幸的是,它们不能处理布局属性和文本偏移值
一个解决方案能够处理这个问题是很重要的。经过大量的搜索、尝试和错误,我发现我可以做到这一点:
map.setLayoutProperty(“端口”、“文本偏移量”{
属性:“id”,
类型:“分类”,
停止:[
["0", [2, 1]],
["1", [2, 0]],
["2", [0, 2]],
],
默认值:[0,0],
});
“0”
、“1”
和“2”
与属性.id
字段匹配。所以我可以这样做:
map.setLayoutProperty(“布局id”、“文本偏移量”{
属性:“id”,
类型:“分类”,
停止:nodes.map((node)=>{
常数x=node.vx;
常数y=node.vy;
返回[node.id[x,y]];
}),
默认值:[0,0],
});
一种解决方案是将每个点添加到单独的层中。然后我可以做map.queryRenderedFeatures({layers:[“point id”]})
并使用setLayoutProperty()
,但这似乎不是最佳解决方案。请参阅我对@SteveBennett的回答谢谢。第三个选项对于我的用例来说似乎是最好的,但是看起来它可能不适用于布局:{text offset:…}
?我得到错误:图层.端口.布局.文本偏移量[0]:预期数量,找到数组
我将通过将所需偏移量添加到新的“偏移量”中来修改要素,然后将要素添加到地图中,并具有带有“文本偏移量”的样式:[“得到”,“偏移量”]