如何使用 mapbox-gl 为特征点设置单独的布局属性?
How to set individual layout properties for feature points with 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]);
每个功能都应该有自己的 text-offset
,基于各自的值。我该如何实现?
更新
@steve-bennett 在下面的评论中提供了一些很好的建议,但遗憾的是它们不适用于布局属性和文本偏移值。
解决方案可以解决这个问题很重要。
经过大量搜索、反复试验,我发现我可以这样做:
map.setLayoutProperty("ports", "text-offset", {
property: "id",
type: "categorical",
stops: [
["0", [2, 1]],
["1", [2, 0]],
["2", [0, 2]],
],
default: [0, 0],
});
"0"
、"1"
和 "2"
与 properties.id
字段匹配。所以我可以这样做:
map.setLayoutProperty("layout-id", "text-offset", {
property: "id",
type: "categorical",
stops: nodes.map((node) => {
const x = node.vx;
const y = node.vy;
return [node.id, [x, y]];
}),
default: [0, 0],
});
我有一组特征点,不想单独更新每个特征点的某些布局属性。我该怎么做?
这是我目前所拥有的。
const features = getVisibleFeatures();
// This updates all. Not what I wan't. Each feature should have different offset.
map.setLayoutProperty("ports", "text-offset", [5, 5]);
每个功能都应该有自己的 text-offset
,基于各自的值。我该如何实现?
更新
@steve-bennett 在下面的评论中提供了一些很好的建议,但遗憾的是它们不适用于布局属性和文本偏移值。
解决方案可以解决这个问题很重要。
经过大量搜索、反复试验,我发现我可以这样做:
map.setLayoutProperty("ports", "text-offset", {
property: "id",
type: "categorical",
stops: [
["0", [2, 1]],
["1", [2, 0]],
["2", [0, 2]],
],
default: [0, 0],
});
"0"
、"1"
和 "2"
与 properties.id
字段匹配。所以我可以这样做:
map.setLayoutProperty("layout-id", "text-offset", {
property: "id",
type: "categorical",
stops: nodes.map((node) => {
const x = node.vx;
const y = node.vy;
return [node.id, [x, y]];
}),
default: [0, 0],
});