2025-02-24 16:49:40 +01:00
|
|
|
import { Store } from "../../Logic/UIEventSource"
|
|
|
|
import {
|
|
|
|
DataDrivenPropertyValueSpecification,
|
|
|
|
LayerSpecification,
|
|
|
|
Map as MlMap,
|
2025-06-04 00:21:28 +02:00
|
|
|
SymbolLayerSpecification,
|
2025-02-24 16:49:40 +01:00
|
|
|
} from "maplibre-gl"
|
|
|
|
import Locale from "../i18n/Locale"
|
|
|
|
import { Utils } from "../../Utils"
|
|
|
|
|
|
|
|
export class ProtomapsLanguageSupport {
|
|
|
|
private _map: Store<MlMap>
|
|
|
|
|
2025-03-06 16:21:55 +01:00
|
|
|
private static expressions: Record<
|
|
|
|
string,
|
|
|
|
(language: string) => DataDrivenPropertyValueSpecification<string>
|
|
|
|
> = {
|
|
|
|
places_country: (language) => [
|
|
|
|
"format",
|
|
|
|
["coalesce", ["get", "name:" + language], ["get", "name:en"]],
|
|
|
|
{},
|
|
|
|
],
|
|
|
|
places_region: (language) => [
|
|
|
|
"step",
|
|
|
|
["zoom"],
|
|
|
|
["get", "name:short"],
|
|
|
|
6,
|
|
|
|
[
|
|
|
|
"case",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"all",
|
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["has", "script"],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["any", ["is-supported-script", ["get", "name"]], ["has", "pgf:name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
|
|
|
["coalesce", ["get", "name:" + language], ["get", "name:en"]],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"case",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"all",
|
|
|
|
["!", ["has", "name:" + language]],
|
|
|
|
["has", "name:en"],
|
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
"",
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
2025-02-24 16:49:40 +01:00
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:en"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"all",
|
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["any", ["has", "name2"], ["has", "pgf:name2"]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
["all", ["has", "script"], ["has", "script2"]],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
["get", "name:" + language],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["has", "script2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
2025-03-06 16:21:55 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
["all", ["has", "script"], ["has", "script2"], ["has", "script3"]],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
["get", "name:" + language],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
["!", ["has", "script2"]],
|
|
|
|
[
|
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name3"],
|
|
|
|
["get", "name3"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
],
|
|
|
|
],
|
|
|
|
],
|
|
|
|
places_locality: (language) => [
|
|
|
|
"case",
|
|
|
|
[
|
|
|
|
"all",
|
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
[
|
2025-02-24 16:49:40 +01:00
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["has", "script"],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"case",
|
|
|
|
["any", ["is-supported-script", ["get", "name"]], ["has", "pgf:name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
|
|
|
["coalesce", ["get", "name:" + language], ["get", "name:en"]],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"case",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"all",
|
|
|
|
["!", ["has", "name:" + language]],
|
|
|
|
["has", "name:en"],
|
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
"",
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
],
|
|
|
|
["get", "name:en"],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
["coalesce", ["get", "name:" + language], ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"all",
|
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["any", ["has", "name2"], ["has", "pgf:name2"]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
["all", ["has", "script"], ["has", "script2"]],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
["get", "name:" + language],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["has", "script2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
2025-02-24 16:49:40 +01:00
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
["all", ["has", "script"], ["has", "script2"], ["has", "script3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
|
|
|
["get", "name:" + language],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "script2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name3"],
|
|
|
|
["get", "name3"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
],
|
|
|
|
places_subplace: (language) => [
|
|
|
|
"case",
|
|
|
|
[
|
|
|
|
"all",
|
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
|
|
|
],
|
|
|
|
[
|
2025-02-24 16:49:40 +01:00
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["has", "script"],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["any", ["is-supported-script", ["get", "name"]], ["has", "pgf:name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "name:" + language], ["get", "name:en"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"case",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"all",
|
|
|
|
["!", ["has", "name:" + language]],
|
|
|
|
["has", "name:en"],
|
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
"",
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:en"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
|
|
|
["coalesce", ["get", "name:" + language], ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"all",
|
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["any", ["has", "name2"], ["has", "pgf:name2"]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
["all", ["has", "script"], ["has", "script2"]],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
["get", "name:" + language],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
["has", "script2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
2025-03-06 16:21:55 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
2025-02-24 16:49:40 +01:00
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
[
|
2025-02-24 16:49:40 +01:00
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["all", ["has", "script"], ["has", "script2"], ["has", "script3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
|
|
|
["get", "name:" + language],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
2025-02-24 16:49:40 +01:00
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "script2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name3"],
|
|
|
|
["get", "name3"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
],
|
|
|
|
],
|
|
|
|
pois: (language) => [
|
|
|
|
"case",
|
|
|
|
[
|
|
|
|
"all",
|
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
["has", "script"],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["any", ["is-supported-script", ["get", "name"]], ["has", "pgf:name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "name:" + language], ["get", "name:en"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"case",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"all",
|
|
|
|
["!", ["has", "name:" + language]],
|
|
|
|
["has", "name:en"],
|
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
"",
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
2025-03-06 16:21:55 +01:00
|
|
|
],
|
|
|
|
["get", "name:en"],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
["coalesce", ["get", "name:" + language], ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"all",
|
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["any", ["has", "name2"], ["has", "pgf:name2"]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
["all", ["has", "script"], ["has", "script2"]],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
["get", "name:" + language],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
["has", "script2"],
|
|
|
|
[
|
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
["all", ["has", "script"], ["has", "script2"], ["has", "script3"]],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
["get", "name:" + language],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "script2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name3"],
|
|
|
|
["get", "name3"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
],
|
|
|
|
pois_peak: (language) => ProtomapsLanguageSupport.simpleExpression(language),
|
|
|
|
water_label_lakes: (language) => ProtomapsLanguageSupport.waterwayExpression(language),
|
|
|
|
water_label_ocean: (language) => ProtomapsLanguageSupport.waterwayExpression(language),
|
|
|
|
water_waterway_label: (language) => ProtomapsLanguageSupport.waterwayExpression(language),
|
|
|
|
roads_labels_minor: (language) => ProtomapsLanguageSupport.roadLabelExpression(language),
|
|
|
|
roads_labels_major: (language) => ProtomapsLanguageSupport.roadLabelExpression(language),
|
|
|
|
}
|
2025-02-24 16:49:40 +01:00
|
|
|
|
|
|
|
constructor(map: Store<MlMap>) {
|
|
|
|
this._map = map
|
|
|
|
map.addCallbackAndRunD(async (map) => {
|
|
|
|
this.update()
|
|
|
|
while (!map.isStyleLoaded()) {
|
|
|
|
await Utils.waitFor(250)
|
|
|
|
}
|
|
|
|
this.update()
|
|
|
|
map.on("styledata", () => {
|
|
|
|
this.update()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
Locale.language.addCallback(() => this.update())
|
|
|
|
}
|
|
|
|
|
|
|
|
private _isUpdating = false
|
|
|
|
|
|
|
|
public update() {
|
|
|
|
ProtomapsLanguageSupport._update(this._map?.data, Locale.language.data)
|
|
|
|
}
|
|
|
|
|
2025-03-06 16:21:55 +01:00
|
|
|
private static waterwayExpression(
|
|
|
|
language: string
|
|
|
|
): DataDrivenPropertyValueSpecification<string> {
|
|
|
|
return [
|
|
|
|
"case",
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"all",
|
2025-03-06 16:21:55 +01:00
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["has", "script"],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["any", ["is-supported-script", ["get", "name"]], ["has", "pgf:name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "name:" + language], ["get", "name:en"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
[
|
|
|
|
"all",
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "name:" + language]],
|
|
|
|
["has", "name:en"],
|
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
"",
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:en"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "name:" + language], ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{},
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"all",
|
2025-03-06 16:21:55 +01:00
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["any", ["has", "name2"], ["has", "pgf:name2"]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["all", ["has", "script"], ["has", "script2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
2025-02-24 16:49:40 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["has", "script2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"coalesce",
|
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["all", ["has", "script"], ["has", "script2"], ["has", "script3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
2025-02-24 16:49:40 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "script2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name3"],
|
|
|
|
["get", "name3"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2025-03-06 16:21:55 +01:00
|
|
|
private static simpleExpression(
|
|
|
|
language: string
|
|
|
|
): DataDrivenPropertyValueSpecification<string> {
|
|
|
|
return ["coalesce", ["get", "name:" + language], ["get", "name"], ["get", "name:en"]]
|
2025-02-24 16:49:40 +01:00
|
|
|
}
|
|
|
|
|
2025-03-06 16:21:55 +01:00
|
|
|
private static roadLabelExpression(
|
|
|
|
language: string
|
|
|
|
): DataDrivenPropertyValueSpecification<string> {
|
2025-02-24 16:49:40 +01:00
|
|
|
return [
|
|
|
|
"case",
|
|
|
|
[
|
|
|
|
"all",
|
2025-03-06 16:21:55 +01:00
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["has", "script"],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["any", ["is-supported-script", ["get", "name"]], ["has", "pgf:name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "name:" + language], ["get", "name:en"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
|
|
|
[
|
|
|
|
"case",
|
|
|
|
[
|
|
|
|
"all",
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "name:" + language]],
|
|
|
|
["has", "name:en"],
|
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
"",
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:en"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
2025-03-06 16:21:55 +01:00
|
|
|
"format",
|
|
|
|
["coalesce", ["get", "name:" + language], ["get", "pgf:name"], ["get", "name"]],
|
|
|
|
{},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"all",
|
|
|
|
["any", ["has", "name"], ["has", "pgf:name"]],
|
|
|
|
["any", ["has", "name2"], ["has", "pgf:name2"]],
|
|
|
|
["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["all", ["has", "script"], ["has", "script2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
2025-02-24 16:49:40 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["has", "script2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["all", ["has", "script"], ["has", "script2"], ["has", "script3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
2025-02-24 16:49:40 +01:00
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "script"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name"],
|
|
|
|
["get", "name"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
2025-03-06 16:21:55 +01:00
|
|
|
["!", ["has", "script2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name2"],
|
|
|
|
["get", "name2"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name3"], ["get", "name3"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script3"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
[
|
|
|
|
"format",
|
|
|
|
[
|
|
|
|
"coalesce",
|
2025-03-06 16:21:55 +01:00
|
|
|
["get", "name:" + language],
|
|
|
|
["get", "pgf:name3"],
|
|
|
|
["get", "name3"],
|
2025-02-24 16:49:40 +01:00
|
|
|
],
|
|
|
|
{},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name"], ["get", "name"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
{},
|
2025-03-06 16:21:55 +01:00
|
|
|
["coalesce", ["get", "pgf:name2"], ["get", "name2"]],
|
2025-02-24 16:49:40 +01:00
|
|
|
{
|
|
|
|
"text-font": [
|
|
|
|
"case",
|
2025-03-06 16:21:55 +01:00
|
|
|
["==", ["get", "script2"], "Devanagari"],
|
|
|
|
["literal", ["Noto Sans Devanagari Regular v1"]],
|
|
|
|
["literal", ["Noto Sans Regular"]],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
],
|
2025-02-24 16:49:40 +01:00
|
|
|
]
|
|
|
|
}
|
|
|
|
|
|
|
|
private static _update(map: MlMap, language: string) {
|
|
|
|
if (!map) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if (!map.isStyleLoaded()) {
|
|
|
|
map.once("styledata", () => {
|
|
|
|
ProtomapsLanguageSupport._update(map, language)
|
|
|
|
})
|
|
|
|
return
|
|
|
|
}
|
2025-03-06 16:21:55 +01:00
|
|
|
const style = map.getStyle()
|
|
|
|
;(style.layers ?? []).forEach((layer: LayerSpecification) => {
|
2025-02-24 16:49:40 +01:00
|
|
|
if (layer.type !== "symbol") {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
const symbolLayer: SymbolLayerSpecification = layer
|
|
|
|
|
|
|
|
if (symbolLayer.source !== "protomaps") {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
const tf = symbolLayer.layout?.["text-field"]
|
|
|
|
if (tf === undefined) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
const newExpressionF = ProtomapsLanguageSupport.expressions[layer.id]
|
|
|
|
if (!newExpressionF) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
const newExpression = newExpressionF(language)
|
|
|
|
if (!newExpression) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
const oldProperty = map.getLayoutProperty(layer.id, "text-field")
|
|
|
|
if (JSON.stringify(oldProperty) === JSON.stringify(newExpression)) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
map.setLayoutProperty(layer.id, "text-field", newExpression)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|