Ekspresi Gaya Berbasis Data (Android SDK)

Catatan

Penghentian Azure Peta Android SDK

Azure Peta Native SDK untuk Android sekarang tidak digunakan lagi dan akan dihentikan pada 31/3/25. Untuk menghindari gangguan layanan, migrasikan ke Azure Peta Web SDK dengan 3/31/25. Untuk informasi selengkapnya, lihat Panduan migrasi Azure Peta Android SDK.

Ekspresi memungkinkan Anda menerapkan logika bisnis ke opsi gaya yang mengawasi properti yang ditentukan dalam setiap bentuk di sumber data. Ekspresi dapat memfilter data dalam sumber data atau lapisan. Ekspresi mungkin terdiri dari logika bersyarat, seperti pernyataan jika. Selain itu, mereka dapat digunakan untuk memanipulasi data menggunakan: operator string, operator logis, dan operator matematika.

Gaya berbasis data mengurangi jumlah kode yang diperlukan untuk mengimplementasikan logika bisnis yang bersangkutan dengan gaya. Saat digunakan dengan lapisan, ekspresi dievaluasi menurut waktu render pada utas terpisah. Fungsionalitas ini memberikan peningkatan performa dibandingkan dengan mengevaluasi logika bisnis pada utas UI.

Azure Maps Android SDK mendukung hampir semua ekspresi gaya yang sama dengan Azure Maps Web SDK, sehingga semua konsep yang sama yang diuraikan dalam Ekspresi Gaya Berbasis Data (Web SDK) dapat dibawa ke dalam aplikasi Android. Semua ekspresi gaya di Azure Maps Android SDK tersedia dalam namespace com.microsoft.azure.maps.mapcontrol.options.Expression. Ada berbagai jenis ekspresi gaya yang berbeda.

Jenis ekspresi Deskripsi
Ekspresi Boolean Ekspresi Boolean memberikan serangkaian ekspresi operator boolean untuk mengevaluasi perbandingan boolean.
Ekspresi warna Ekspresi warna memudahkan Anda membuat dan memanipulasi nilai warna.
Ekspresi bersyarat Ekspresi bersyarat menyediakan operasi logika yang mirip dengan pernyataan jika.
Ekspresi data Menyediakan akses ke data properti dalam suatu fitur.
Ekspresi Interpolasi dan Langkah Ekspresi interpolasi dan langkah dapat digunakan untuk menghitung nilai di sepanjang kurva atau fungsi langkah yang diinterpolasi.
Ekspresi berbasis JSON Memudahkan untuk menggunakan kembali ekspresi berbasis JSON mentah gaya, yang dibuat untuk Web SDK dengan Android SDK.
Ekspresi khusus lapisan Ekspresi spesifik yang hanya berlaku untuk satu lapisan.
Ekspresi matematika Menyediakan operator matematika untuk melakukan penghitungan berbasis data dalam kerangka kerja ekspresi.
Ekspresi operator string Ekspresi operator string melakukan operasi konversi pada string, misalnya menggabungkan dan mengonversi kasus.
Ekspresi jenis Ekspresi jenis menyediakan alat untuk menguji dan mengonversi jenis data yang berbeda, seperti string, angka, dan nilai boolean.
Ekspresi pengikatan variabel Ekspresi pengikatan variabel menyimpan hasil penghitungan dalam variabel dan direferensikan di tempat lain dalam ekspresi beberapa kali, tanpa harus menghitung ulang nilai yang disimpan.
Ekspresi pembesaran tampilan Mengambil tingkat pembesaran tampilan peta saat ini pada waktu render.

Catatan

Sintaks untuk ekspresi sebagian besar identik dalam Java dan Kotlin. Jika Anda memiliki dokumentasi yang diatur ke Kotlin, tetapi melihat blok kode untuk Java, kode tersebut identik dalam kedua bahasa.

Semua contoh dalam bagian dokumen ini menggunakan fitur berikut untuk menunjukkan berbagai cara di mana ekspresi-ekspresi ini dapat digunakan.

{
    "type": "Feature",
    "geometry": {
        "type": "Point",
        "coordinates": [-122.13284, 47.63699]
    },
    "properties": {
        "id": 123,
        "entityType": "restaurant",
        "revenue": 12345,
        "subTitle": "Building 40", 
        "temperature": 64,
        "title": "Cafeteria", 
        "zoneColor": "purple",
        "abcArray": ["a", "b", "c"],
        "array2d": [["a", "b"], ["x", "y"]],
        "_style": {
            "fillColor": "red"
        }
    }
}

Kode berikut menunjukkan cara membuat fitur GeoJSON ini secara manual dalam aplikasi.

//Create a point feature.
Feature feature = Feature.fromGeometry(Point.fromLngLat(-100, 45));

//Add properties to the feature.
feature.addNumberProperty("id", 123);
feature.addStringProperty("entityType", "restaurant");
feature.addNumberProperty("revenue", 12345);
feature.addStringProperty("subTitle", "Building 40");
feature.addNumberProperty("temperature", 64);
feature.addStringProperty("title", "Cafeteria");
feature.addStringProperty("zoneColor", "purple");

JsonArray abcArray = new JsonArray();
abcArray.add("a");
abcArray.add("b");
abcArray.add("c");

feature.addProperty("abcArray", abcArray);

JsonArray array1 = new JsonArray();
array1.add("a");
array1.add("b");

JsonArray array2 = new JsonArray();
array1.add("x");
array1.add("y");

JsonArray array2d = new JsonArray();
array2d.add(array1);
array2d.add(array2);

feature.addProperty("array2d", array2d);

JsonObject style = new JsonObject();
style.addProperty("fillColor", "red");

feature.addProperty("_style", style);
//Create a point feature.
val feature = Feature.fromGeometry(Point.fromLngLat(-100, 45))

//Add properties to the feature.
feature.addNumberProperty("id", 123)
feature.addStringProperty("entityType", "restaurant")
feature.addNumberProperty("revenue", 12345)
feature.addStringProperty("subTitle", "Building 40")
feature.addNumberProperty("temperature", 64)
feature.addStringProperty("title", "Cafeteria")
feature.addStringProperty("zoneColor", "purple")

val abcArray = JsonArray()
abcArray.add("a")
abcArray.add("b")
abcArray.add("c")

feature.addProperty("abcArray", abcArray)

val array1 = JsonArray()
array1.add("a")
array1.add("b")

val array2 = JsonArray()
array1.add("x")
array1.add("y")

val array2d = JsonArray()
array2d.add(array1)
array2d.add(array2)

feature.addProperty("array2d", array2d)

val style = JsonObject()
style.addProperty("fillColor", "red")

feature.addProperty("_style", style)

Kode berikut menunjukkan cara mendeserialisasi versi objek JSON yang diuntai dalam string ke dalam fitur GeoJSON dalam aplikasi.

String featureString = "{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.13284,47.63699]},\"properties\":{\"id\":123,\"entityType\":\"restaurant\",\"revenue\":12345,\"subTitle\":\"Building 40\",\"temperature\":64,\"title\":\"Cafeteria\",\"zoneColor\":\"purple\",\"abcArray\":[\"a\",\"b\",\"c\"],\"array2d\":[[\"a\",\"b\"],[\"x\",\"y\"]],\"_style\":{\"fillColor\":\"red\"}}}";

Feature feature = Feature.fromJson(featureString);
val featureString = "{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.13284,47.63699]},\"properties\":{\"id\":123,\"entityType\":\"restaurant\",\"revenue\":12345,\"subTitle\":\"Building 40\",\"temperature\":64,\"title\":\"Cafeteria\",\"zoneColor\":\"purple\",\"abcArray\":[\"a\",\"b\",\"c\"],\"array2d\":[[\"a\",\"b\"],[\"x\",\"y\"]],\"_style\":{\"fillColor\":\"red\"}}}"

val feature = Feature.fromJson(featureString)

Ekspresi berbasis JSON

Azure Maps Web SDK juga mendukung ekspresi gaya berbasis data yang diwakili menggunakan array JSON. Ekspresi yang sama ini dapat dibuat ulang menggunakan kelas Expression asli di Android SDK. Atau, ekspresi berbasis JSON ini dapat dikonversi menjadi string dengan menggunakan fungsi web seperti JSON.stringify dan dimasukkan ke dalam metode Expression.raw(String rawExpression). Misalnya, gunakan ekspresi JSON berikut.

var exp = ['get','title'];
JSON.stringify(exp); // = "['get','title']"

Versi yang diuntai dalam string dari ekspresi di atas semestinya "['get','title']" dan dapat dibaca dalam Android SDK sebagai berikut.

Expression exp = Expression.raw("['get','title']")
val exp = Expression.raw("['get','title']")

Menggunakan pendekatan ini dapat memudahkan untuk menggunakan kembali ekspresi gaya antara aplikasi seluler dan aplikasi web yang menggunakan Azure Maps.

Video ini memberikan gambaran umum penggunaan gaya berbasis data di Azure Maps.


Ekspresi data

Ekspresi data menyediakan akses ke data properti dalam suatu fitur.

Ekspresi Tipe hasil Deskripsi
accumulated() number Mendapatkan nilai properti kluster yang terakumulasi sejauh ini. Ini hanya dapat digunakan dalam opsi clusterProperties dari sumber DataSource berkluster.
at(number | Expression, Expression) value Mengambil suatu item dari array.
geometryType() string Mendapatkan jenis geometri fitur: Titik, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon.
get(string | Expression) | get(string | Expression, Expression) value Mendapatkan nilai properti dari properti objek yang disediakan. Mengembalikan null jika properti yang diminta tidak ditemukan.
has(string | Expression) | has(string | Expression, Expression) Boolean Menentukan apakah properti fitur memiliki properti yang ditentukan.
id() value Mendapatkan ID fitur, jika tersedia.
in(string | number | Expression, Expression) Boolean Menentukan apakah item ada dalam array
length(string | Expression) number Mendapatkan panjang suatu string atau array.
properties() value Mendapatkan objek properti fitur.

Ekspresi gaya Web SDK berikut ini tidak didukung di Android SDK:

  • indeks-dari
  • irisan

Contoh

Properti fitur dapat diakses secara langsung dalam ekspresi dengan menggunakan ekspresi get. Contoh ini menggunakan nilai zoneColor dari fitur untuk menentukan properti warna lapisan gelembung.

BubbleLayer layer = new BubbleLayer(source,
    //Get the zoneColor value.
    bubbleColor(get("zoneColor"))
);
val layer = BubbleLayer(source,
    //Get the zoneColor value.
    bubbleColor(get("zoneColor"))
)

Contoh di atas berfungsi dengan baik, jika semua fitur titik memiliki zoneColor properti . Jika tidak, warnanya kemungkinan besar akan kembali ke "hitam". Untuk mengubah warna mundur, gunakan ekspresi switchCase yang dikombinasikan dengan ekspresi has untuk memeriksa apakah properti tersebut ada. Jika properti tidak ada, kembalikan warna mundur.

BubbleLayer layer = new BubbleLayer(source,
    bubbleColor(
        //Use a conditional case expression.
        switchCase(
            //Check to see if feature has a "zoneColor" 
            has("zoneColor"), 

            //If it does, use it.
            get("zoneColor"), 

            //If it doesn't, default to blue.
            literal("blue")
        )
    )
);
val layer = BubbleLayer(source,
    bubbleColor(
        //Use a conditional case expression.
        switchCase(
            //Check to see if feature has a "zoneColor" 
            has("zoneColor"), 

            //If it does, use it.
            get("zoneColor"), 

            //If it doesn't, default to blue.
            literal("blue")
        )
    )
)

Lapisan gelembung dan simbol merender koordinat semua bentuk dalam sumber data, secara default. Perilaku ini dapat menyoroti node poligon atau baris. Opsi filter dari lapisan dapat digunakan untuk membatasi jenis geometri dari fitur yang direndernya, dengan menggunakan ekspresi geometryType dalam ekspresi boolean. Contoh berikut membatasi lapisan gelembung, sehingga hanya fitur Point yang dirender.

BubbleLayer layer = new BubbleLayer(source,
    filter(eq(geometryType(), "Point"))
);
val layer = BubbleLayer(source,
    filter(eq(geometryType(), "Point"))
)

Contoh berikut ini memungkinkan fitur Point dan MultiPoint untuk dirender.

BubbleLayer layer = new BubbleLayer(source,
    filter(any(eq(geometryType(), "Point"), eq(geometryType(), "MultiPoint")))
);
val layer = BubbleLayer(source,
    filter(any(eq(geometryType(), "Point"), eq(geometryType(), "MultiPoint")))
)

Demikian pula, kerangka Poligon dirender dalam lapisan baris. Untuk menonaktifkan perilaku ini dalam lapisan baris, tambahkan filter yang hanya memungkinkan fitur LineString dan MultiLineString.

Berikut adalah contoh selengkapnya tentang cara menggunakan ekspresi data:

//Get item [2] from an array "properties.abcArray[1]" = "c"
at(2, get("abcArray"))

//Get item [0][1] from a 2D array "properties.array2d[0][1]" = "b"
at(1, at(0, get("array2d")))

//Check to see if a value is in an array "properties.abcArray.indexOf('a') !== -1" = true
in("a", get("abcArray"))

//Get the length of an array "properties.abcArray.length" = 3
length(get("abcArray"))

//Get the value of a subproperty "properties._style.fillColor" = "red"
get("fillColor", get("_style"))

//Check that "fillColor" exists as a subproperty of "_style".
has("fillColor", get("_style"))

Ekspresi matematika

Ekspresi matematika menyediakan operator matematika untuk melakukan penghitungan berbasis data dalam kerangka kerja ekspresi.

Ekspresi Tipe hasil Deskripsi
abs(number | Expression) number Menghitung nilai mutlak dari angka yang ditentukan.
acos(number | Expression) number Menghitung arccosine dari angka yang ditentukan.
asin(number | Expression) number Menghitung arcsine dari angka yang ditentukan.
atan(number | Expression) number Menghitung arctangent dari angka yang ditentukan.
ceil(number | Expression) number Membulatkan angka ke atas, ke bilangan bulat berikutnya.
cos(number | Expression) number Menghitung cos dari angka yang ditentukan.
division(number, number) | division(Expression, Expression) number Membagi angka pertama dengan angka kedua. Ekspresi setara Web SDK: /
e() number Mengembalikan konstanta e matematika.
floor(number | Expression) number Membulatkan angka ke bawah ke bilangan bulat sebelumnya.
log10(number | Expression) number Menghitung logaritma basis-sepuluh dari angka yang ditentukan.
log2(number | Expression) number Menghitung logaritma basis-dua dari angka yang ditentukan.
ln(number | Expression) number Menghitung logaritma natural dari angka yang ditentukan.
ln2() number Mengembalikan konstanta ln(2) matematika.
max(numbers... | expressions...) number Menghitung angka maksimum dalam rangkaian angka yang ditentukan.
min(numbers... | expressions...) number Menghitung angka minimum dalam rangkaian angka yang ditentukan.
mod(number, number) | mod(Expression, Expression) number Menghitung sisa saat membagi angka pertama dengan angka kedua. Ekspresi setara Web SDK: %
pi() number Mengembalikan konstanta PI matematika.
pow(number, number) | pow(Expression, Expression) number Menghitung nilai pertama yang dinaikkan ke pangkat angka kedua.
product(numbers... | expressions...) number Mengalikan angka yang ditentukan bersama-sama. Ekspresi setara Web SDK: *
round(number | Expression) number Membulatkan angka ke bilangan bulat terdekat. Nilai setengah dibulatkan dari nol. Misalnya, round(-1.5) dievaluasi ke -2.
sin(number | Expression) number Menghitung sinus dari angka yang ditentukan.
sqrt(number | Expression) number Menghitung akar kuadrat dari angka yang ditentukan.
subtract(number | Expression number Mengurangi 0 dengan angka yang ditentukan.
subtract(number | Expression, number | Expression) number Mengurangi angka pertama dengan angka kedua.
sum(numbers... | expressions...) number Menghitung jumlah angka yang ditentukan.
tan(number | Expression) number Menghitung tangen dari angka yang ditentukan.

Ekspresi Boolean

Ekspresi Boolean memberikan serangkaian ekspresi operator boolean untuk mengevaluasi perbandingan boolean.

Saat membandingkan nilai, perbandingan digolongkan dengan ketat. Nilai dari berbagai jenis yang berbeda selalu dianggap tidak setara. Kasus di mana jenis diketahui berbeda pada waktu penguraian dianggap tidak valid dan menghasilkan kesalahan penguraian.

Ekspresi Tipe hasil Deskripsi
all(Expression...) Boolean Mengembalikan true jika semua input adalah true, dan false jika tidak.
any(Expression...) Boolean Mengembalikan true jika ada input yang true, dan false jika tidak.
eq(Expression compareOne, Expression | boolean | number | string compareTwo) | eq(Expression compareOne, Expression | string compareTwo, Expression collator) Boolean Mengembalikan true jika nilai input sama, dan false jika tidak. Argumen ini diperlukan untuk menjadi kedua string atau kedua angka.
gt(Expression compareOne, Expression | boolean | number | string compareTwo) | gt(Expression compareOne, Expression | string compareTwo, Expression collator) Boolean Mengembalikan true jika input pertama jauh lebih besar daripada yang kedua, dan false jika tidak. Argumen ini diperlukan untuk menjadi kedua string atau kedua angka.
gte(Expression compareOne, Expression | boolean | number | string compareTwo) | gte(Expression compareOne, Expression | string compareTwo, Expression collator) Boolean Mengembalikan true jika input pertama lebih besar atau sama dengan yang kedua, dan false jika tidak. Argumen ini diperlukan untuk menjadi kedua string atau kedua angka.
lt(Expression compareOne, Expression | boolean | number | string compareTwo) | lt(Expression compareOne, Expression | string compareTwo, Expression collator) Boolean Mengembalikan true jika input pertama jauh lebih kecil dari yang kedua, dan false jika tidak. Argumen ini diperlukan untuk menjadi kedua string atau kedua angka.
lte(Expression compareOne, Expression | boolean | number | string compareTwo) | lte(Expression compareOne, Expression | string compareTwo, Expression collator) Boolean Mengembalikan true jika input pertama kurang dari atau sama dengan yang kedua, false jika tidak. Argumen ini diperlukan untuk menjadi kedua string atau kedua angka.
neq(Expression compareOne, Expression | boolean | number | string compareTwo) | neq(Expression compareOne, Expression | string compareTwo, Expression collator) Boolean Mengembalikan true jika nilai input tidak sama, false jika tidak.
not(Expression | boolean) Boolean Negasi logis. Mengembalikan true jika input adalah false, dan false jika input adalah true.

Ekspresi bersyarat

Ekspresi bersyarat menyediakan operasi logika yang mirip dengan pernyataan jika.

Ekspresi berikut menjalankan operasi logika bersyarat pada data input. Misalnya, ekspresi switchCase menyediakan logika "if/then/else" saat ekspresi match adalah seperti "switch-statement".

Ekspresi tukar kasus

Ekspresi switchCase adalah jenis ekspresi bersyarat yang menyediakan logika "jika/maka/kalau tidak". Jenis ekspresi ini melangkah melalui urutan persyaratan boolean. Ini mengembalikan nilai output dari syarat boolean pertama untuk dievaluasi sebagai benar.

Pseudocode berikut mendefinisikan struktur ekspresi switchCase.

switchCase(
    condition1: boolean expression, 
    output1: value,
    condition2: boolean expression, 
    output2: value,
    ...,
    fallback: value
)

Contoh

Contoh berikut melangkah melalui berbagai persyaratan boolean yang berbeda sampai menemukan persyaratan yang dievaluasi ke true, lalu mengembalikan nilai terkait tersebut. Jika tidak ada kondisi boolean yang dievaluasi ke true, nilai fallback dikembalikan.

BubbleLayer layer = new BubbleLayer(source,
    bubbleColor(
        switchCase(
            //Check to see if the first boolean expression is true, and if it is, return its assigned result.
            //If it has a zoneColor property, use its value as a color.
            has("zoneColor"), toColor(get("zoneColor")),

            //Check to see if the second boolean expression is true, and if it is, return its assigned result.
            //If it has a temperature property with a value greater than or equal to 100, make it red.
            all(has("temperature"), gte(get("temperature"), 100)), color(Color.RED),

            //Specify a default value to return. In this case green.
            color(Color.GREEN)
        )
    )
);
val layer = BubbleLayer(source,
    bubbleColor(
        switchCase(
            //Check to see if the first boolean expression is true, and if it is, return its assigned result.
            //If it has a zoneColor property, use its value as a color.
            has("zoneColor"), toColor(get("zoneColor")),

            //Check to see if the second boolean expression is true, and if it is, return its assigned result.
            //If it has a temperature property with a value greater than or equal to 100, make it red.
            all(has("temperature"), gte(get("temperature"), 100)), color(Color.RED),

            //Specify a default value to return. In this case green.
            color(Color.GREEN)
        )
    )
)

Ekspresi pencocokan

Ekspresi match adalah jenis ekspresi bersyarat yang menyediakan logika mirip pernyataan-tukar. Input bisa berupa ekspresi apa pun seperti get( "entityType") yang mengembalikan string atau angka. Setiap stop harus memiliki label yang berupa nilai harfiah tunggal atau array nilai harfiah, yang nilainya harus semuanya berupa string atau semuanya berupa angka. Input cocok jika salah satu nilai dalam array cocok. Setiap label stop harus unik. Jika jenis input tidak cocok dengan jenis label, hasilnya adalah nilai fallback default.

Pseudocode berikut mendefinisikan struktur ekspresi match.

match(Expression input, Expression defaultOutput, Expression.Stop... stops)

Contoh

Contoh berikut mengamati properti entityType dari fitur Titik dalam lapisan gelembung yang mencari kecocokan. Jika menemukan kecocokan, nilai yang ditentukan akan dikembalikan atau itu akan mengembalikan nilai mundur.

BubbleLayer layer = new BubbleLayer(source,
    bubbleColor(
        match(
            //Get the input value to match.
            get("entityType"),

            //Specify a default value to return if no match is found.
            color(Color.BLACK),

            //List the values to match and the result to return for each match.

            //If value is "restaurant" return "red".
            stop("restaurant", color(Color.RED)),

            //If value is "park" return "green".
            stop("park", color(Color.GREEN))
        )
    )
);
val layer = BubbleLayer(source,
    bubbleColor(
        match(
            //Get the input value to match.
            get("entityType"),

            //Specify a default value to return if no match is found.
            color(Color.BLACK),

            //List the values to match and the result to return for each match.

            //If value is "restaurant" return "red".
            stop("restaurant", color(Color.RED)),

            //If value is "park" return "green".
            stop("park", color(Color.GREEN))
        )
    )
)

Contoh berikut ini menggunakan array untuk mencantumkan serangkaian label yang semuanya harus mengembalikan nilai yang sama. Pendekatan ini jauh lebih efisien daripada mencantumkan setiap label secara terpisah. Dalam hal ini, jika entityType properti adalah "restoran" atau "grocery_store", warna "merah" dikembalikan.

BubbleLayer layer = new BubbleLayer(source,
    bubbleColor(
        match(
            //Get the input value to match.
            get("entityType"),

            //Specify a default value to return if no match is found.
            color(Color.BLACK),

            //List the values to match and the result to return for each match.

            //If value is "restaurant" or "grocery_store" return "red".
            stop(Arrays.asList("restaurant", "grocery_store"), color(Color.RED)),

            //If value is "park" return "green".
            stop("park", color(Color.GREEN))
        )
    )
);
val layer = BubbleLayer(source,
    bubbleColor(
        match(
            //Get the input value to match.
            get("entityType"),

            //Specify a default value to return if no match is found.
            color(Color.BLACK),

            //List the values to match and the result to return for each match.

            //If value is "restaurant" or "grocery_store" return "red".
            stop(arrayOf("restaurant", "grocery_store"), color(Color.RED)),

            //If value is "park" return "green".
            stop("park", color(Color.GREEN))
        )
    )
)

Ekspresi gabungkan

Ekspresi coalesce melangkah melalui serangkaian ekspresi sampai nilai bukan-null pertama diperoleh, dan mengembalikan nilai tersebut.

Pseudocode berikut mendefinisikan struktur ekspresi coalesce.

coalesce(Expression... input)

Contoh

Contoh berikut menggunakan ekspresi coalesce untuk mengatur opsi textField dari lapisan simbol. title Jika properti hilang dari fitur atau diatur ke null, ekspresi mencoba mencari subTitle properti , jika hilang atau null, maka akan kembali ke string kosong.

SymbolLayer layer = new SymbolLayer(source,
    textField(
        coalesce(
            //Try getting the title property.
            get("title"),

            //If there is no title, try getting the subTitle. 
            get("subTitle"),

            //Default to an empty string.
            literal("")
        )
    )
);
val layer = SymbolLayer(source,
    textField(
        coalesce(
            //Try getting the title property.
            get("title"),

            //If there is no title, try getting the subTitle. 
            get("subTitle"),

            //Default to an empty string.
            literal("")
        )
    )
)

Ekspresi jenis

Ekspresi jenis menyediakan alat untuk menguji dan mengonversi jenis data yang berbeda, seperti string, angka, dan nilai boolean.

Ekspresi Tipe hasil Deskripsi
array(Expression) Objek[] Menegaskan bahwa input adalah array.
bool(Expression) Boolean Menegaskan bahwa nilai input adalah boolean.
collator(boolean caseSensitive, boolean diacriticSensitive) | collator(boolean caseSensitive, boolean diacriticSensitive, java.util.Locale locale) | collator(Expression caseSensitive, Expression diacriticSensitive) | collator(Expression caseSensitive, Expression diacriticSensitive, Expression locale) kolator Mengembalikan kolator untuk digunakan dalam operasi perbandingan dependen lokal. Opsi yang peka huruf besar/kecil dan peka diakritik men-default ke salah. Argumen lokal menentukan tag bahasa IETF dari lokal untuk digunakan. Jika tidak tersedia, lokal default akan digunakan. Jika lokal yang diminta tidak tersedia, kolaator menggunakan lokal fallback yang ditentukan sistem. Gunakan resolved-locale untuk menguji hasil perilaku mundur lokal.
literal(boolean \| number \| string \| Object \| Object[]) boolean | nomor| untai (karakter) | Objek| Objek[] Mengembalikan array literal atau nilai objek. Gunakan ekspresi ini untuk mencegah suatu array atau objek dievaluasi sebagai ekspresi. Ini diperlukan ketika array atau objek perlu dikembalikan oleh ekspresi.
number(Expression) number Menegaskan bahwa nilai input adalah angka.
object(Expression) Objek Menegaskan bahwa nilai input adalah sebuah objek.
string(Expression) string Menegaskan bahwa nilai input adalah string.
toArray(Expression) Objek[] Mengonversi ekspresi menjadi array Objek JSON.
toBool(Expression) Boolean Mengonversi nilai input menjadi boolean.
toNumber(Expression) number Mengonversi nilai input menjadi angka, jika memungkinkan.
toString(Expression) string Mengonversi nilai input menjadi string.
typeoOf(Expression) string Mengembalikan string yang menjelaskan jenis nilai yang diberikan.

Ekspresi warna

Ekspresi warna memudahkan Anda membuat dan memanipulasi nilai warna.

Ekspresi Tipe hasil Deskripsi
color(int) color Mengonversi nilai bilangan bulat warna menjadi ekspresi warna.
rgb(Expression red, Expression green, Expression blue) | rgb(number red, number green, number blue) color Menciptakan nilai warna dari komponen merah, hijau, dan biru yang harus berkisar antara 0 dan 255, dan komponen alfa 1. Jika ada komponen di luar rentang, ekspresi tersebut adalah kesalahan.
rgba(Expression red, Expression green, Expression blue, Expression alpha) | rgba(number red, number green, number blue, number alpha) color Menciptakan nilai warna dari komponen merah, hijau, dan biru yang harus berkisar antara 0 dan 255, dan komponen alfa dalam rentang 0 dan 1. Jika ada komponen di luar rentang, ekspresi tersebut adalah kesalahan.
toColor(Expression) color Mengonversi nilai input menjadi warna.
toRgba(Expression) color Mengembalikan array empat elemen yang berisi komponen merah, hijau, biru, dan komponen alfa warna input, dalam urutan tersebut.

Contoh

Contoh berikut membuat nilai warna RGB yang memiliki nilai merah sebesar 255, dan nilai hijau dan biru yang dihitung dengan mengalikan 2.5 dengan nilai properti temperature. Ketika suhu berubah, warna berubah menjadi nuansa merah yang berbeda.

BubbleLayer layer = new BubbleLayer(source,
    bubbleColor(
        //Create a RGB color value.
        rgb(
            //Set red value to 255. Wrap with literal expression since using expressions for other values.
            literal(255f),    

            //Multiple the temperature by 2.5 and set the green value.
            product(literal(2.5f), get("temperature")), 

            //Multiple the temperature by 2.5 and set the blue value.
            product(literal(2.5f), get("temperature")) 
        )
    )
);
val layer = BubbleLayer(source,
    bubbleColor(
        //Create a RGB color value.
        rgb(
            //Set red value to 255. Wrap with literal expression since using expressions for other values.
            literal(255f),    

            //Multiple the temperature by 2.5 and set the green value.
            product(literal(2.5f), get("temperature")), 

            //Multiple the temperature by 2.5 and set the blue value.
            product(literal(2.5f), get("temperature")) 
        )
    )
)

Jika semua parameter warna adalah angka, tidak perlu membungkusnya dengan literal ekspresi. Contohnya:

BubbleLayer layer = new BubbleLayer(source,
    bubbleColor(
        //Create a RGB color value.
        rgb(
            255f,  //Set red value to 255.

            150f,  //Set green value to 150.

            0f     //Set blue value to 0.
        )
    )
);
val layer = BubbleLayer(source,
    bubbleColor(
        //Create a RGB color value.
        rgb(
            255f,  //Set red value to 255.

            150f,  //Set green value to 150.

            0f     //Set blue value to 0.
        )
    )
)

Tip

Nilai warna string dapat dikonversi menjadi warna menggunakan metode android.graphics.Color.parseColor. Berikut ini mengonversi string warna heksadesimal menjadi ekspresi warna yang dapat digunakan dengan lapisan.

color(parseColor("#ff00ff"))

Ekspresi operator string

Ekspresi operator string melakukan operasi konversi pada string, misalnya menggabungkan dan mengonversi kasus.

Ekspresi Tipe hasil Deskripsi
concat(string...) | concat(Expression...) string Menggabungkan beberapa string bersama-sama. Setiap nilai harus berupa string. Gunakan ekspresi jenis toString untuk mengonversi jenis nilai lain menjadi string, jika diperlukan.
downcase(string) | downcase(Expression) string Mengonversi string yang ditentukan menjadi huruf kecil.
isSupportedScript(string) | isSupportedScript(Expression) Boolean Menentukan jika string input menggunakan tataan karakter yang didukung oleh tumpukan font saat ini. Misalnya: isSupportedScript("ಗೌರವಾರ್ಥವಾಗಿ")
resolvedLocale(Expression collator) string Mengembalikan tag bahasa IETF dari lokal yang digunakan oleh kolator yang disediakan. Ini dapat digunakan untuk menentukan lokal sistem default, atau untuk menentukan apakah lokal yang diminta berhasil dimuat.
upcase(string) | upcase(Expression) string Mengonversi string yang ditentukan menjadi huruf besar.

Contoh

Contoh berikut mengonversi properti temperature dari fitur titik menjadi string, kemudian menggabungkan "°F" ke akhir fitur tersebut.

SymbolLayer layer = new SymbolLayer(source,
    textField(
        concat(Expression.toString(get("temperature")), literal("°F"))
    ),

    //Some additional style options.
    textOffset(new Float[] { 0f, -1.5f }),
    textSize(12f),
    textColor("white")
);
val layer = SymbolLayer(source,
    textField(
        concat(Expression.toString(get("temperature")), literal("°F"))
    ),

    //Some additional style options.
    textOffset(new Float[] { 0f, -1.5f }),
    textSize(12f),
    textColor("white")
)

Ekspresi di atas merender pin di peta dengan teks "64°F" dilapisi di atasnya seperti yang ditunjukkan pada gambar berikut.

Contoh ekspresi operator string

Ekspresi interpolasi dan langkah

Ekspresi interpolasi dan langkah dapat digunakan untuk menghitung nilai di sepanjang kurva atau fungsi langkah yang diinterpolasi. Berbagai ekspresi ini mengambil ekspresi yang mengembalikan nilai numerik sebagai inputnya, misalnya get("temperature"). Nilai input dievaluasi terhadap pasangan nilai input dan output, untuk menentukan nilai yang paling sesuai dengan kurva terinterpolasi atau fungsi langkah. Nilai output disebut "stop". Nilai input untuk setiap stop harus berupa angka dan berada dalam urutan naik. Nilai output harus berupa angka, dan array angka, atau warna.

Ekspresi interpolasi

Ekspresi interpolate dapat digunakan untuk menghitung rangkaian nilai yang berkelanjutan dan halus, dengan menginterpolasi antar nilai stop. Ekspresi interpolate yang mengembalikan nilai warna menghasilkan gradien warna, tempat nilai hasil dipilih. Ekspresi interpolate memiliki berbagai format berikut ini:

//Stops consist of two expressions.
interpolate(Expression.Interpolator interpolation, Expression number, Expression... stops)

//Stop expression wraps two values.
interpolate(Expression.Interpolator interpolation, Expression number, Expression.Stop... stops)

Ada tiga jenis metode interpolasi yang dapat digunakan dalam ekspresi interpolate:

Nama Deskripsi
linear() Menginterpolasi secara linear antara sepasang stop.
exponential(number) | exponential(Expression) Menginterpolasi secara eksponensial antara stop. "Basis" ditentukan dan mengontrol laju peningkatan output. Nilai yang lebih tinggi membuat output semakin meningkat ke ujung atas rentang. Nilai “basis” yang mendekati 1 menghasilkan output yang meningkat lebih linier.
cubicBezier(number x1, number y1, number x2, number y2) | cubicBezier(Expression x1, Expression y1, Expression x2, Expression y2) Menginterpolasi menggunakan kurva Bezier kubik yang didefinisikan oleh titik kontrol yang diberikan.

Ekspresi stop memiliki format stop(stop, value).

Berikut adalah contoh tampilan berbagai jenis interpolasi ini.

Linier Eksponensial Bezier Kubik
Grafik interpolasi linier Grafik interpolasi eksponensial Grafik interpolasi Bezier Kubik

Contoh

Contoh berikut menggunakan ekspresi linear interpolate untuk mengatur properti bubbleColor lapisan gelembung berdasarkan properti temperature fitur titik. temperature Jika nilainya kurang dari 60, "biru" dikembalikan. Jika antara 60 dan kurang dari 70, kuning dikembalikan. Jika antara 70 dan kurang dari 80, "oranye" (#FFA500) dikembalikan. Jika 80 atau lebih besar, "merah" dikembalikan.

BubbleLayer layer = new BubbleLayer(source,
    bubbleColor(
        interpolate(
            linear(),
            get("temperature"),
            stop(50, color(Color.BLUE)),
            stop(60, color(Color.YELLOW)),
            stop(70, color(parseColor("#FFA500"))),
            stop(80, color(Color.RED))
        )
    )
);
val layer = BubbleLayer(source,
    bubbleColor(
        interpolate(
            linear(),
            get("temperature"),
            stop(50, color(Color.BLUE)),
            stop(60, color(Color.YELLOW)),
            stop(70, color(parseColor("#FFA500"))),
            stop(80, color(Color.RED))
        )
    )
)

Gambar berikut menunjukkan bagaimana warna dipilih untuk ekspresi di atas.

Contoh ekspresi interpolasi

Ekspresi langkah

Ekspresi step dapat digunakan untuk menghitung nilai hasil langkah yang diskrit dengan mengevaluasi fungsi konstanta sepotong yang ditentukan oleh stop.

Ekspresi interpolate memiliki berbagai format berikut ini:

step(Expression input, Expression defaultOutput, Expression... stops)

step(Expression input, Expression defaultOutput, Expression.Stop... stops)

step(Expression input, number defaultOutput, Expression... stops)

step(Expression input, number defaultOutput, Expression.Stop... stops)

step(number input, Expression defaultOutput, Expression... stops)

step(number input, Expression defaultOutput, Expression.Stop... stops)

step(number input, number defaultOutput, Expression... stops)

step(number input, number defaultOutput, Expression.Stop... stops)

Ekspresi langkah mengembalikan nilai output stop tepat sebelum nilai input, atau nilai input pertama jika input kurang dari stop pertama.

Contoh

Contoh berikut menggunakan ekspresi step untuk mengatur properti bubbleColor lapisan gelembung berdasarkan properti temperature fitur titik. temperature Jika nilainya kurang dari 60, "biru" dikembalikan. Jika antara 60 dan kurang dari 70, "kuning" dikembalikan. Jika antara 70 dan kurang dari 80, "oranye" dikembalikan. Jika 80 atau lebih besar, "merah" dikembalikan.

BubbleLayer layer = new BubbleLayer(source,
    bubbleColor(
        step(
            get("temperature"),
            color(Color.BLUE),
            stop(60, color(Color.YELLOW)),
            stop(70, color(parseColor("#FFA500"))),
            stop(80, color(Color.RED))
        )
    )
);
val layer = BubbleLayer(source,
    bubbleColor(
        step(
            get("temperature"),
            color(Color.BLUE),
            stop(60, color(Color.YELLOW)),
            stop(70, color(parseColor("#FFA500"))),
            stop(80, color(Color.RED))
        )
    )
)

Gambar berikut menunjukkan bagaimana warna dipilih untuk ekspresi di atas.

Contoh ekspresi langkah

Ekspresi spesifik lapisan

Ekspresi spesifik yang hanya berlaku untuk lapisan tertentu.

Ekspresi kepadatan peta panas

Ekspresi kepadatan peta panas mengambil nilai kepadatan peta panas untuk setiap piksel dalam lapisan peta panas dan didefinisikan sebagai heatmapDensity. Nilai ini berupa angka antara 0 dan 1. Ini digunakan dalam kombinasi dengan ekspresi interpolation atau step untuk menentukan gradien warna yang digunakan untuk mewarnai peta panas. Ekspresi ini hanya dapat digunakan dalam opsi heatmapColor pada lapisan peta panas.

Tip

Warna pada indeks 0, dalam ekspresi interpolasi atau warna default warna langkah, menentukan warna area di mana tidak ada data. Warna pada indeks 0 dapat digunakan untuk menentukan warna latar belakang. Banyak orang lebih suka mengatur nilai ini menjadi transparan atau hitam semi-transparan.

Contoh

Contoh ini menggunakan ekspresi interpolasi linier untuk membuat gradien warna yang halus untuk merender peta panas.

HeatMapLayer layer = new HeatMapLayer(source,
    heatmapColor(
        interpolate(
            linear(),
            heatmapDensity(),
            stop(0, color(Color.TRANSPARENT)),
            stop(0.01, color(Color.MAGENTA)),
            stop(0.5, color(parseColor("#fb00fb"))),
            stop(1, color(parseColor("#00c3ff")))
        )
    )
);
val layer = HeatMapLayer(source,
    heatmapColor(
        interpolate(
            linear(),
            heatmapDensity(),
            stop(0, color(Color.TRANSPARENT)),
            stop(0.01, color(Color.MAGENTA)),
            stop(0.5, color(parseColor("#fb00fb"))),
            stop(1, color(parseColor("#00c3ff")))
        )
    )
)

Selain menggunakan gradien halus untuk mewarnai peta panas, warna dapat ditentukan dalam serangkaian rentang dengan menggunakan ekspresi step. Menggunakan ekspresi step untuk mewarnai peta panas secara visual memecah kepadatan menjadi beberapa rentang yang menyerupai peta kontur atau gaya radar.

HeatMapLayer layer = new HeatMapLayer(source,
    heatmapColor(
        step(
            heatmapDensity(),
            color(Color.TRANSPARENT),
            stop(0.01, color(parseColor("#000080"))),
            stop(0.25, color(parseColor("#000080"))),
            stop(0.5, color(Color.GREEN)),
            stop(0.5, color(Color.YELLOW)),
            stop(1, color(Color.RED))
        )
    )
);
val layer = HeatMapLayer(source,
    heatmapColor(
        step(
            heatmapDensity(),
            color(Color.TRANSPARENT),
            stop(0.01, color(parseColor("#000080"))),
            stop(0.25, color(parseColor("#000080"))),
            stop(0.5, color(Color.GREEN)),
            stop(0.5, color(Color.YELLOW)),
            stop(1, color(Color.RED))
        )
    )
)

Untuk informasi selengkapnya, lihat dokumentasi Menambah lapisan peta panas.

Ekspresi kemajuan garis

Ekspresi kemajuan garis mengambil kemajuan di sepanjang garis gradien dalam lapisan garis dan didefinisikan sebagai lineProgress(). Nilai ini berupa angka antara 0 dan 1. Ini digunakan dalam kombinasi dengan ekspresi interpolation atau step. Ekspresi ini hanya dapat digunakan dengan opsi strokeGradient dari lapisan baris.

Catatan

Opsi strokeGradient lapisan baris memerlukan opsi lineMetrics sumber data untuk diatur ke true.

Contoh

Contoh ini menggunakan ekspresi lineProgress() untuk menerapkan gradien warna ke goresan garis.

LineLayer layer = new LineLayer(source,
    strokeGradient(
        interpolate(
            linear(),
            lineProgress(),
            stop(0, color(Color.BLUE)),
            stop(0.1, color(Color.argb(255, 65, 105, 225))), //Royal Blue
            stop(0.3, color(Color.CYAN)),
            stop(0.5, color(Color.argb(255,0, 255, 0))), //Lime
            stop(0.7, color(Color.YELLOW)),
            stop(1, color(Color.RED))
        )
    )
);
val layer = LineLayer(source,
    strokeGradient(
        interpolate(
            linear(),
            lineProgress(),
            stop(0, color(Color.BLUE)),
            stop(0.1, color(Color.argb(255, 65, 105, 225))), //Royal Blue
            stop(0.3, color(Color.CYAN)),
            stop(0.5, color(Color.argb(255,0, 255, 0))), //Lime
            stop(0.7, color(Color.YELLOW)),
            stop(1, color(Color.RED))
        )
    )
)

Lihat contoh langsung

Ekspresi format bidang teks

Ekspresi format dapat digunakan dengan opsi textField lapisan simbol untuk menyediakan pemformatan teks campuran. Ekspresi ini mengambil dalam satu ekspresi formatEntry atau lebih yang menentukan suatu string dan serangkaian formatOptions untuk ditambahkan ke bidang teks.

Ekspresi Deskripsi
format(Expression...) Mengembalikan teks yang diformat, yang berisi anotasi, untuk digunakan dalam entri bidang teks format campuran.
formatEntry(Expression text) | formatEntry(Expression text, Expression.FormatOption... formatOptions) | formatEntry(String text) | formatEntry(String text, Expression.FormatOption... formatOptions) Mengembalikan entri string yang diformat untuk digunakan dalam ekspresi format.

Opsi format berikut yang tersedia adalah:

Ekspresi Deskripsi
formatFontScale(number) | formatFontScale(Expression) Menentukan faktor penskalaan untuk ukuran fon. Jika ditentukan, nilai ini akan mengambil textSize alih properti untuk string individual.
formatTextFont(string[]) | formatTextFont(Expression) Menentukan warna untuk diterapkan ke teks saat penyajian.

Contoh

Contoh berikut memformat bidang teks dengan menambahkan fon tebal dan meningkatkan ukuran fon properti title dari fitur. Contoh ini juga menambahkan properti subTitle dari fitur pada baris baru, dengan ukuran fon yang diperkecil.

SymbolLayer layer = new SymbolLayer(source,
    textField(
        format(
            //Bold the title property and scale its font size up.
            formatEntry(
                get("title"),
                formatTextFont(new String[] { "StandardFont-Bold" }),
                formatFontScale(1.25)),

            //Add a new line without any formatting.
            formatEntry("\n"),

            //Scale the font size down of the subTitle property.
            formatEntry(
                get("subTitle"),
                formatFontScale(0.75))
        )
    )
);
val layer = SymbolLayer(source,
    textField(
        format(
            //Bold the title property and scale its font size up.
            formatEntry(
                get("title"),
                formatTextFont(arrayOf("StandardFont-Bold")),
                formatFontScale(1.25)),

            //Add a new line without any formatting.
            formatEntry("\n"),

            //Scale the font size down of the subTitle property.
            formatEntry(
                get("subTitle"),
                formatFontScale(0.75))
        )
    )
)

Lapisan ini merender fitur titik seperti yang ditunjukkan pada gambar berikut:

Gambar fitur Titik dengan bidang teks yang diformat

Ekspresi pembesaran tampilan

Ekspresi zoom digunakan untuk mengambil tingkat pembesaran tampilan peta saat ini pada waktu render dan didefinisikan sebagai zoom(). Ekspresi ini mengembalikan angka di antara rentang tingkat pembesaran tampilan minimum dan maksimum peta. Kontrol peta interaktif Azure Maps untuk web dan Android mendukung 25 tingkat perbesar tampilan, dengan nomor 0 hingga 24. Menggunakan ekspresi zoom memungkinkan gaya dimodifikasi secara dinamis saat tingkat pembesaran tampilan peta diubah. Ekspresi zoom hanya dapat digunakan dengan ekspresi interpolate dan step.

Contoh

Secara default, radii poin data yang dirender di lapisan peta panas memiliki radius piksel tetap untuk semua tingkat pembesaran tampilan. Saat memperbesar peta, data mengagregasi bersama dan lapisan peta panas terlihat berbeda. Ekspresi zoom dapat digunakan untuk menskalakan radius untuk setiap tingkat pembesaran tampilan, sehingga setiap poin data mencakup area fisik yang sama pada peta. Ini membuat lapisan peta panas terlihat lebih statis dan konsisten. Setiap tingkat pembesaran peta memiliki piksel dua kali lebih banyak secara vertikal dan horizontal dibandingkan tingkat pembesaran sebelumnya. Menskalakan radius, sehingga dua kali lipat dengan setiap tingkat perbesar tampilan, membuat peta panas yang terlihat konsisten pada semua tingkat zoom. Ini dapat dicapai menggunakan ekspresi zoom dengan ekspresi base 2 exponential interpolation dan radius piksel yang diatur untuk tingkat pembesaran tampilan minimum dan radius skala untuk tingkat pembesaran tampilan maksimum, yang dihitung sebagai 2 * Math.pow(2, minZoom - maxZoom) seperti yang ditunjukkan di bawah ini.

HeatMapLayer layer = new HeatMapLayer(source,
    heatmapRadius(
        interpolate(
            exponential(2),
            zoom(),

            //For zoom level 1 set the radius to 2 pixels.
            stop(1, 2),

            //Between zoom level 1 and 19, exponentially scale the radius from 2 pixels to 2 * (maxZoom - minZoom)^2 pixels.
            stop(19, 2 * Math.pow(2, 19 - 1))
        )
    )
);
val layer = HeatMapLayer(source,
    heatmapRadius(
        interpolate(
            exponential(2),
            zoom(),

            //For zoom level 1 set the radius to 2 pixels.
            stop(1, 2),

            //Between zoom level 1 and 19, exponentially scale the radius from 2 pixels to 2 * (maxZoom - minZoom)^2 pixels.
            stop(19, 2 * Math.pow(2, 19 - 1))
        )
    )
)

Ekspresi pengikatan variabel

Ekspresi pengikatan variabel menyimpan hasil penghitungan dalam variabel. Dengan demikian, hasil penghitungan dapat direferensikan di tempat lain dalam ekspresi beberapa kali. Ini adalah pengoptimalan yang berguna untuk ekspresi yang melibatkan banyak perhitungan.

Ekspresi Tipe hasil Deskripsi
let(Expression... input) Menyimpan satu atau beberapa nilai sebagai variabel untuk digunakan oleh ekspresi var dalam ekspresi anak yang mengembalikan hasil.
var(Expression expression) | var(string variableName) Objek Mereferensikan variabel yang dibuat menggunakan ekspresi let.

Contoh

Contoh ini menggunakan ekspresi yang menghitung pendapatan relatif terhadap rasio suhu, lalu menggunakan ekspresi case untuk mengevaluasi berbagai operasi boolean yang berbeda pada nilai ini. Ekspresi let digunakan untuk menyimpan pendapatan relatif terhadap rasio suhu, sehingga ini hanya perlu dihitung satu kali. Ekspresi var mereferensikan variabel ini sesering yang diperlukan tanpa harus menghitungnya kembali.

BubbleLayer layer = new BubbleLayer(source,
    bubbleColor(           
        let(
            //Divide the point features `revenue` property by the `temperature` property and store it in a variable called `ratio`.
            literal("ratio"), division(get("revenue"), get("temperature")),

            //Evaluate the child expression in which the stored variable will be used.
            switchCase(
                //Check to see if the ratio is less than 100, return 'red'.
                lt(var("ratio"), 100), color(Color.RED),

                //Check to see if the ratio is less than 200, return 'green'.
                lt(var("ratio"), 200), color(Color.GREEN),

                //Return `blue` for values greater or equal to 200.
                color(Color.BLUE)
            )
        )
    )
);
val layer = BubbleLayer(source,
    bubbleColor(           
        let(
            //Divide the point features `revenue` property by the `temperature` property and store it in a variable called `ratio`.
            literal("ratio"), division(get("revenue"), get("temperature")),

            //Evaluate the child expression in which the stored variable will be used.
            switchCase(
                //Check to see if the ratio is less than 100, return 'red'.
                lt(var("ratio"), 100), color(Color.RED),

                //Check to see if the ratio is less than 200, return 'green'.
                lt(var("ratio"), 200), color(Color.GREEN),

                //Return `blue` for values greater or equal to 200.
                color(Color.BLUE)
            )
        )
    )
)

Langkah berikutnya

Pelajari selengkapnya tentang lapisan-lapisan yang mendukung ekspresi: