当在 MapBox 中找不到其他语言时,如何将标签默认为英语?
How can I default labels to English when not found in other language in MapBox?
我正在尝试支持我的地图的西班牙语用户,并且已经弄清楚如何将所有标注图层设置为某种语言:
const langCode = Math.random() < 0.5 ? "en" | "es";
const layers = this.mapbox.getStyle().layers.filter((it) => it.id.includes("label"))
layers.forEach((layer) => {
this.mapbox.setLayoutProperty(layer.id, "text-field", [
"get",
`name_${langCode}`
])
});
问题是在西班牙语模式下一半的地图最终是空的。如果没有其他语言存在,我希望将英语作为默认备份。我该怎么做?
您可以使用 coalesce 将默认值设置为英语
https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/#coalesce
https://docs.mapbox.com/mapbox-gl-js/example/fallback-image/
我想代码应该是这样的
layers.forEach((layer) => {
this.mapbox.setLayoutProperty(layer.id, "text-field", [
"coalesce",
["get", `name_${langCode}`],
// default to english if not found
["get", `name_en`],
])
})
我正在尝试支持我的地图的西班牙语用户,并且已经弄清楚如何将所有标注图层设置为某种语言:
const langCode = Math.random() < 0.5 ? "en" | "es";
const layers = this.mapbox.getStyle().layers.filter((it) => it.id.includes("label"))
layers.forEach((layer) => {
this.mapbox.setLayoutProperty(layer.id, "text-field", [
"get",
`name_${langCode}`
])
});
问题是在西班牙语模式下一半的地图最终是空的。如果没有其他语言存在,我希望将英语作为默认备份。我该怎么做?
您可以使用 coalesce 将默认值设置为英语
https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/#coalesce https://docs.mapbox.com/mapbox-gl-js/example/fallback-image/
我想代码应该是这样的
layers.forEach((layer) => {
this.mapbox.setLayoutProperty(layer.id, "text-field", [
"coalesce",
["get", `name_${langCode}`],
// default to english if not found
["get", `name_en`],
])
})