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.
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 |
---|---|---|
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.
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.
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))
)
)
)
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:
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: