Veri temelli stil ifadeleri (Android SDK)
Not
Android SDK'sı kullanımdan kaldırılmasını Azure Haritalar
Android için Azure Haritalar Yerel SDK artık kullanım dışıdır ve 31/3/25 tarihinde kullanımdan kaldırılacaktır. Hizmet kesintilerini önlemek için 31.03.25'e kadar Azure Haritalar Web SDK'sına geçin. Daha fazla bilgi için bkz. Android SDK geçiş kılavuzu Azure Haritalar.
İfadeler, bir veri kaynağındaki her şekilde tanımlanan özellikleri gözlemleyen stil seçeneklerine iş mantığı uygulamanızı sağlar. İfadeler bir veri kaynağındaki veya katmandaki verileri filtreleyebilir. İfadeler if-deyimleri gibi koşullu mantıklardan oluşabilir. Ayrıca, dize işleçleri, mantıksal işleçler ve matematiksel işleçler kullanarak verileri işlemek için kullanılabilirler.
Veri temelli stiller, stil oluşturmayla ilgili iş mantığı uygulamak için gereken kod miktarını azaltır. Katmanlarla kullanıldığında, ifadeler ayrı bir iş parçacığında işleme zamanında değerlendirilir. Bu işlevsellik, kullanıcı arabirimi iş parçacığındaki iş mantığını değerlendirmeye kıyasla daha yüksek performans sağlar.
Azure Haritalar Android SDK'sı, Azure Haritalar Web SDK'sı ile neredeyse tüm stil ifadelerini destekler, bu nedenle Veri temelli Stil İfadeleri'nde (Web SDK) özetlenen tüm kavramlar bir Android uygulamasına aktarılabilir. Azure Haritalar Android SDK'sı içindeki tüm stil ifadeleri ad alanı altında com.microsoft.azure.maps.mapcontrol.options.Expression
kullanılabilir. Birçok farklı stil ifadesi türü vardır.
İfade türü | Açıklama |
---|---|
Boole ifadeleri | Boole ifadeleri, boole karşılaştırmalarını değerlendirmek için bir dizi boole işleç ifadesi sağlar. |
Renk ifadeleri | Renk ifadeleri, renk değerlerini oluşturmayı ve işlemeyi kolaylaştırır. |
Koşullu ifadeler | Koşullu ifadeler if-deyimleri gibi mantıksal işlemler sağlar. |
Veri ifadeleri | Bir özellikteki özellik verilerine erişim sağlar. |
İlişkilendirme ve Adım ifadeleri | Ara değer ve adım ifadeleri, ilişkilendirilmiş bir eğri veya adım işlevi boyunca değerleri hesaplamak için kullanılabilir. |
JSON tabanlı ifadeler | Android SDK ile Web SDK'sı için oluşturulan stil ham JSON tabanlı ifadelerin yeniden kullanılmasını kolaylaştırır. |
Katmana özgü ifadeler | Yalnızca tek bir katman için geçerli olan özel ifadeler. |
Matematik ifadeleri | İfade çerçevesi içinde veri temelli hesaplamalar yapmak için matematiksel işleçler sağlar. |
Dize işleç ifadeleri | Dize işleci ifadeleri, büyük/küçük harf birleştirme ve dönüştürme gibi dizelerde dönüştürme işlemleri gerçekleştirir. |
Tür ifadeleri | Tür ifadeleri dizeler, sayılar ve boole değerleri gibi farklı veri türlerini test edip dönüştürmek için araçlar sağlar. |
Değişken bağlama ifadeleri | Değişken bağlama ifadeleri bir hesaplamanın sonuçlarını bir değişkende depolar ve depolanmış değeri yeniden hesaplamak zorunda kalmadan ifadenin başka bir yerinde birden çok kez başvurulur. |
Yakınlaştırma ifadesi | İşleme zamanında haritanın geçerli yakınlaştırma düzeyini alır. |
Not
İfadelerin söz dizimi Java ve Kotlin'de büyük ölçüde aynıdır. Belgeler Kotlin olarak ayarlandıysa ancak Java için kod bloklarına bakın, kod her iki dilde de aynıdır.
Belgenin bu bölümündeki tüm örnekler, bu ifadelerin kullanılabilmesinin farklı yollarını göstermek için aşağıdaki özelliği kullanır.
{
"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"
}
}
}
Aşağıdaki kod, bir uygulamada bu GeoJSON özelliğinin el ile nasıl oluşturulacağını gösterir.
//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)
Aşağıdaki kodda, JSON nesnesinin dizeli sürümünün bir uygulamadaki GeoJSON özelliğinde seri durumdan nasıl çıkarıldığı gösterilmektedir.
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)
JSON tabanlı ifadeler
Azure Haritalar Web SDK'sı, JSON dizisi kullanılarak temsil edilen veri temelli stil ifadelerini de destekler. Bu ifadeler Android SDK'daki yerel Expression
sınıf kullanılarak yeniden oluşturulabilir. Alternatif olarak, bu JSON tabanlı ifadeler gibi JSON.stringify
bir web işlevi kullanılarak bir dizeye dönüştürülebilir ve yöntemine Expression.raw(String rawExpression)
geçirilebilir. Örneğin, aşağıdaki JSON ifadesini alın.
var exp = ['get','title'];
JSON.stringify(exp); // = "['get','title']"
Yukarıdaki ifadenin dizeli sürümü şöyle olur "['get','title']"
ve Android SDK'sına okunabilir.
Expression exp = Expression.raw("['get','title']")
val exp = Expression.raw("['get','title']")
Bu yaklaşımın kullanılması, Azure Haritalar kullanan mobil uygulamalar ve web uygulamaları arasında stil ifadelerini yeniden kullanmayı kolaylaştırabilir.
Bu video, Azure Haritalar'da veri odaklı stile genel bir bakış sağlar.
Veri ifadeleri
Veri ifadeleri, bir özellikteki özellik verilerine erişim sağlar.
Expression | Dönüş türü | Açıklama |
---|---|---|
accumulated() |
Numara | Şimdiye kadar birikmiş bir küme özelliğinin değerini alır. Bu yalnızca kümelenmiş DataSource kaynak seçeneğinde clusterProperties kullanılabilir. |
at(number | Expression, Expression) |
değer | Diziden bir öğe alır. |
geometryType() |
Dize | Özelliğin geometri türünü alır: Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon. |
get(string | Expression) | get(string | Expression, Expression) |
değer | Sağlanan nesnenin özelliklerinden özellik değerini alır. İstenen özellik eksikse null döndürür. |
has(string | Expression) | has(string | Expression, Expression) |
boolean | Bir özelliğin özelliklerinin belirtilen özelliğe sahip olup olmadığını belirler. |
id() |
değer | Varsa özelliğin kimliğini alır. |
in(string | number | Expression, Expression) |
boolean | Bir öğenin dizide var olup olmadığını belirler |
length(string | Expression) |
Numara | Bir dizenin veya dizinin uzunluğunu alır. |
properties() |
değer | Özellik özellikleri nesnesini alır. |
Android SDK'da aşağıdaki Web SDK stili ifadeler desteklenmez:
- dizinini oluşturma
- dilim
Örnekler
Bir özelliğin özelliklerine bir ifade kullanılarak doğrudan bir get
ifadede erişilebilir. Bu örnekte, bir kabarcık katmanının renk özelliğini belirtmek için özelliğin değeri kullanılır zoneColor
.
BubbleLayer layer = new BubbleLayer(source,
//Get the zoneColor value.
bubbleColor(get("zoneColor"))
);
val layer = BubbleLayer(source,
//Get the zoneColor value.
bubbleColor(get("zoneColor"))
)
Yukarıdaki örnek, tüm nokta özellikleri özelliğine zoneColor
sahipse düzgün çalışır. Aksi takdirde, renk büyük olasılıkla "siyah" olarak geri döner. Geri dönüş rengini değiştirmek için, özelliğin mevcut olup olmadığını denetlemek için ifadeyle birlikte has
bir switchCase
ifade kullanın. Özelliği yoksa bir geri dönüş rengi döndürün.
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")
)
)
)
Kabarcık ve sembol katmanları, varsayılan olarak bir veri kaynağındaki tüm şekillerin koordinatlarını işler. Bu davranış, çokgen veya çizginin köşelerini vurgulayabilir. Katmanın filter
seçeneği, boole ifadesi içindeki bir geometryType
ifade kullanılarak işlenen özelliklerin geometri türünü sınırlamak için kullanılabilir. Aşağıdaki örnek, kabarcık katmanını yalnızca Point
özelliklerin işlenmek için sınırlar.
BubbleLayer layer = new BubbleLayer(source,
filter(eq(geometryType(), "Point"))
);
val layer = BubbleLayer(source,
filter(eq(geometryType(), "Point"))
)
Aşağıdaki örnek hem hem MultiPoint
de Point
özelliklerin işlenmesine izin verir.
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")))
)
Benzer şekilde, Çokgenlerin ana hattı çizgi katmanlarında işlenir. Çizgi katmanında bu davranışı devre dışı bırakmak için yalnızca ve MultiLineString
özelliklerine izin veren LineString
bir filtre ekleyin.
Veri ifadelerini kullanma hakkında daha fazla örnek aşağıda verilmiştir:
//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"))
Matematik ifadeleri
Matematik ifadeleri, ifade çerçevesi içinde veri temelli hesaplamalar yapmak için matematiksel işleçler sağlar.
Expression | Dönüş türü | Açıklama |
---|---|---|
abs(number | Expression) |
Numara | Belirtilen sayının mutlak değerini hesaplar. |
acos(number | Expression) |
Numara | Belirtilen sayının arkkosinüsünü hesaplar. |
asin(number | Expression) |
Numara | Belirtilen sayının arksinüsünü hesaplar. |
atan(number | Expression) |
Numara | Belirtilen sayının arktanjantını hesaplar. |
ceil(number | Expression) |
Numara | Sayıyı bir sonraki tamsayıya yuvarlar. |
cos(number | Expression) |
Numara | Belirtilen sayının cos değerini hesaplar. |
division(number, number) | division(Expression, Expression) |
Numara | İlk sayıyı ikinci sayıya böler. Web SDK eşdeğeri ifadesi: / |
e() |
Numara | matematiksel sabitini e döndürür. |
floor(number | Expression) |
Numara | Sayıyı önceki tamsayıya aşağı yuvarlar. |
log10(number | Expression) |
Numara | Belirtilen sayının on tabanındaki logaritması hesaplar. |
log2(number | Expression) |
Numara | Belirtilen sayının iki tabanındaki logaritması hesaplar. |
ln(number | Expression) |
Numara | Belirtilen sayının doğal logaritması hesaplanır. |
ln2() |
Numara | matematiksel sabitini ln(2) döndürür. |
max(numbers... | expressions...) |
Numara | Belirtilen sayı kümesindeki maksimum sayıyı hesaplar. |
min(numbers... | expressions...) |
Numara | Belirtilen sayı kümesindeki en düşük sayıyı hesaplar. |
mod(number, number) | mod(Expression, Expression) |
Numara | İlk sayıyı ikinci sayıya bölerken kalanı hesaplar. Web SDK eşdeğeri ifadesi: % |
pi() |
Numara | matematiksel sabitini PI döndürür. |
pow(number, number) | pow(Expression, Expression) |
Numara | İkinci sayının gücüne yükseltilen ilk değerin değerini hesaplar. |
product(numbers... | expressions...) |
Numara | Belirtilen sayıları birlikte çarpar. Web SDK eşdeğeri ifadesi: * |
round(number | Expression) |
Numara | Sayıyı en yakın tamsayıya yuvarlar. Yarı değerler sıfırdan uzağa yuvarlanır. Örneğin, round(-1.5) olarak değerlendirilir -2 . |
sin(number | Expression) |
Numara | Belirtilen sayının sinüsünü hesaplar. |
sqrt(number | Expression) |
Numara | Belirtilen sayının karekökünü hesaplar. |
subtract(number | Expression |
Numara | 0 değerini belirtilen sayıya göre çıkarır. |
subtract(number | Expression, number | Expression) |
Numara | İlk sayıları ikinci sayıya çıkarır. |
sum(numbers... | expressions...) |
Numara | Belirtilen sayıların toplamını hesaplar. |
tan(number | Expression) |
Numara | Belirtilen sayının tanjantını hesaplar. |
Mantıksal ifadeler
Boole ifadeleri, boole karşılaştırmalarını değerlendirmek için bir dizi boole işleç ifadesi sağlar.
Değerler karşılaştırılırken, karşılaştırma kesin olarak yazılır. Farklı türlerdeki değerler her zaman eşit değil olarak kabul edilir. Türlerin ayrıştırma zamanında farklı olduğu bilinen durumlar geçersiz kabul edilir ve ayrıştırma hatası oluşturur.
Expression | Dönüş türü | Açıklama |
---|---|---|
all(Expression...) |
boolean | Tüm girişler true false ise döndürürtrue , aksi takdirde. |
any(Expression...) |
boolean | Girişlerden true false herhangi biri ise döndürürtrue , aksi takdirde. |
eq(Expression compareOne, Expression | boolean | number | string compareTwo) | eq(Expression compareOne, Expression | string compareTwo, Expression collator) |
boolean | Giriş değerleri eşitse, false aksi takdirde döndürürtrue . Bağımsız değişkenlerin hem dize hem de her iki sayı olması gerekir. |
gt(Expression compareOne, Expression | boolean | number | string compareTwo) | gt(Expression compareOne, Expression | string compareTwo, Expression collator) |
boolean | İlk giriş kesinlikle ikinci girişten büyükse döndürür true , false aksi takdirde. Bağımsız değişkenlerin hem dize hem de her iki sayı olması gerekir. |
gte(Expression compareOne, Expression | boolean | number | string compareTwo) | gte(Expression compareOne, Expression | string compareTwo, Expression collator) |
boolean | İlk giriş ikinci girişten büyük veya buna eşitse, false aksi takdirde döndürürtrue . Bağımsız değişkenlerin hem dize hem de her iki sayı olması gerekir. |
lt(Expression compareOne, Expression | boolean | number | string compareTwo) | lt(Expression compareOne, Expression | string compareTwo, Expression collator) |
boolean | İlk giriş kesinlikle ikinci girişten küçükse döndürür true , false aksi takdirde. Bağımsız değişkenlerin hem dize hem de her iki sayı olması gerekir. |
lte(Expression compareOne, Expression | boolean | number | string compareTwo) | lte(Expression compareOne, Expression | string compareTwo, Expression collator) |
boolean | İlk girişin ikinci girişten küçük veya buna eşit olup olmadığını döndürür true , false aksi takdirde. Bağımsız değişkenlerin hem dize hem de her iki sayı olması gerekir. |
neq(Expression compareOne, Expression | boolean | number | string compareTwo) | neq(Expression compareOne, Expression | string compareTwo, Expression collator) |
boolean | Giriş değerleri eşit değilse döndürür true false . |
not(Expression | boolean) |
boolean | Mantıksal olumsuzlama. Giriş ise false ve false girişi ise true döndürürtrue . |
Koşullu ifadeler
Koşullu ifadeler if-deyimleri gibi mantıksal işlemler sağlar.
Aşağıdaki ifadeler, giriş verileri üzerinde koşullu mantık işlemleri gerçekleştirir. Örneğin, switchCase
ifade bir "switch-deyimi" gibiyken match
ifade "if/then/else" mantığı sağlar.
Anahtar büyük/küçük harf ifadesi
İfade switchCase
, "if/then/else" mantığı sağlayan bir koşullu ifade türüdür. Bu ifade türü, boole koşulları listesinde adım adım ilerler. True olarak değerlendirilecek ilk boole koşulunun çıkış değerini döndürür.
Aşağıdaki sahte kod, ifadenin switchCase
yapısını tanımlar.
switchCase(
condition1: boolean expression,
output1: value,
condition2: boolean expression,
output2: value,
...,
fallback: value
)
Örnek
Aşağıdaki örnek, değerini değerlendiren bir değer bulana kadar farklı boole koşullarında adım adım ilerler true
ve ardından ilişkili değeri döndürür. Boole koşulu olarak değerlendirilmezse true
, bir geri dönüş değeri döndürülür.
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)
)
)
)
İfadeyi eşleştir
İfade match
, mantıksal gibi switch-deyimi sağlayan bir koşullu ifade türüdür. Giriş, dize veya sayı döndüren herhangi get( "entityType")
bir ifade olabilir. Her durağın, değerleri tüm dizeler veya tüm sayılar olması gereken tek bir değişmez değer veya değişmez değer dizisi olan bir etiketi olmalıdır. Dizideki değerlerden herhangi biri eşleşiyorsa giriş eşleşir. Her stop etiketi benzersiz olmalıdır. Giriş türü etiketlerin türüyle eşleşmiyorsa, sonuç varsayılan geri dönüş değeridir.
Aşağıdaki sahte kod, ifadenin match
yapısını tanımlar.
match(Expression input, Expression defaultOutput, Expression.Stop... stops)
Örnekler
Aşağıdaki örnekte, bir kabarcık katmanındaki entityType
Bir Nokta özelliğinin özelliği eşleşme arar. Bir eşleşme bulursa, belirtilen değer döndürülür veya geri dönüş değerini döndürür.
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))
)
)
)
Aşağıdaki örnek, tümü aynı değeri döndürmesi gereken bir etiket kümesini listelemek için bir dizi kullanır. Bu yaklaşım, her etiketi ayrı ayrı listelemekten çok daha verimlidir. Bu durumda, özellik "restoran" veya "grocery_store" ise entityType
, "kırmızı" rengi döndürülür.
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))
)
)
)
Birleşim ifadesi
İfade, coalesce
ilk null olmayan değer elde edilene ve bu değeri döndürene kadar bir ifade kümesinde adım adım ilerler.
Aşağıdaki sahte kod, ifadenin coalesce
yapısını tanımlar.
coalesce(Expression... input)
Örnek
Aşağıdaki örnek, simge coalesce
katmanı seçeneğini ayarlamak textField
için bir ifade kullanır. Özelliğin title
özelliği eksikse veya olarak null
ayarlandıysa, ifade eksikse veya null
özelliği aramaya subTitle
çalışır, ardından boş bir dizeye geri döner.
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("")
)
)
)
Tür ifadeleri
Tür ifadeleri dizeler, sayılar ve boole değerleri gibi farklı veri türlerini test edip dönüştürmek için araçlar sağlar.
Expression | Dönüş türü | Açıklama |
---|---|---|
array(Expression) |
Nesne[] | Girişin bir dizi olduğunu onaylar. |
bool(Expression) |
boolean | Giriş değerinin boole değeri olduğunu onaylar. |
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) |
Harmanlama | Yerel ayara bağımlı karşılaştırma işlemlerinde kullanılmak üzere bir harmanlama döndürür. Büyük/küçük harfe duyarlı ve aksan duyarlı seçenekleri varsayılan olarak false olarak ayarlanır. Yerel ayar bağımsız değişkeni, kullanılacak yerel ayarın IETF dil etiketini belirtir. Hiçbiri sağlanmadıysa, varsayılan yerel ayar kullanılır. İstenen yerel ayar kullanılamıyorsa, harmanlayıcısı sistem tanımlı bir geri dönüş yerel ayarı kullanır. Yerel ayar geri dönüş davranışının sonuçlarını test etmek için çözümlenmiş-yerel ayarı kullanın. |
literal(boolean \| number \| string \| Object \| Object[]) |
boole | sayı | dize | Nesne | Nesne[] | Sabit bir dizi veya nesne değeri döndürür. Bir dizi veya nesnenin ifade olarak değerlendirilmesini önlemek için bu ifadeyi kullanın. Bir dizi veya nesnenin bir ifade tarafından döndürülmesi gerektiğinde bu gereklidir. |
number(Expression) |
Numara | Giriş değerinin bir sayı olduğunu onaylar. |
object(Expression) |
Object | Giriş değerinin bir nesne olduğunu onaylar. |
string(Expression) |
Dize | Giriş değerinin bir dize olduğunu onaylar. |
toArray(Expression) |
Nesne[] | İfadeyi bir JSON Nesne dizisine dönüştürür. |
toBool(Expression) |
boolean | Giriş değerini boole değerine dönüştürür. |
toNumber(Expression) |
Numara | Mümkünse giriş değerini sayıya dönüştürür. |
toString(Expression) |
Dize | Giriş değerini bir dizeye dönüştürür. |
typeoOf(Expression) |
Dize | Verilen değerin türünü açıklayan bir dize döndürür. |
Renk ifadeleri
Renk ifadeleri, renk değerlerini oluşturmayı ve işlemeyi kolaylaştırır.
Expression | Dönüş türü | Açıklama |
---|---|---|
color(int) |
color | Renk tamsayısı değerini renk ifadesine dönüştürür. |
rgb(Expression red, Expression green, Expression blue) | rgb(number red, number green, number blue) |
color | ile arasında 0 255 aralığı olması gereken kırmızı, yeşil ve mavi bileşenlerden ve bir alfa bileşeninden 1 bir renk değeri oluşturur. Herhangi bir bileşen aralık dışındaysa, ifade bir hatadır. |
rgba(Expression red, Expression green, Expression blue, Expression alpha) | rgba(number red, number green, number blue, number alpha) |
color | ile arasında 0 aralığı olması gereken kırmızı, yeşil, mavi bileşenlerden ve 255 ile aralığındaki bir alfa bileşeninden 1 0 bir renk değeri oluşturur. Herhangi bir bileşen aralık dışındaysa, ifade bir hatadır. |
toColor(Expression) |
color | Giriş değerini bir renge dönüştürür. |
toRgba(Expression) |
color | Giriş renginin kırmızı, yeşil, mavi ve alfa bileşenlerini bu sırada içeren dört öğeli bir dizi döndürür. |
Örnek
Aşağıdaki örnek, kırmızı değeri olan bir RGB renk değeri ve özelliğin 255
değeriyle çarpılarak 2.5
hesaplanan yeşil ve mavi değerler temperature
oluşturur. Sıcaklık değiştikçe renk farklı kırmızı tonlarına dönüşür.
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"))
)
)
)
Tüm renk parametreleri sayıysa, bunları ifadeyle literal
sarmalamanız gerekmez. Örneğin:
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.
)
)
)
İpucu
Dize rengi değerleri yöntemi kullanılarak android.graphics.Color.parseColor
bir renge dönüştürülebilir. Aşağıdaki, onaltılık renk dizesini katmanla kullanılabilecek bir renk ifadesine dönüştürür.
color(parseColor("#ff00ff"))
Dize işleç ifadeleri
Dize işleci ifadeleri, büyük/küçük harf birleştirme ve dönüştürme gibi dizelerde dönüştürme işlemleri gerçekleştirir.
Expression | Dönüş türü | Açıklama |
---|---|---|
concat(string...) | concat(Expression...) |
Dize | Birden çok dizeyi birleştirir. Her değer bir dize olmalıdır. toString Gerekirse diğer değer türlerini dizeye dönüştürmek için tür ifadesini kullanın. |
downcase(string) | downcase(Expression) |
Dize | Belirtilen dizeyi küçük harfe dönüştürür. |
isSupportedScript(string) | isSupportedScript(Expression) |
boolean | Giriş dizesinin geçerli yazı tipi yığını tarafından desteklenen bir karakter kümesi kullanıp kullanmadığını belirler. Örneğin: isSupportedScript("ಗೌರವಾರ್ಥವಾಗಿ") |
resolvedLocale(Expression collator) |
Dize | Sağlanan harmanlayıcısı tarafından kullanılan yerel ayarın IETF dil etiketini döndürür. Bu, varsayılan sistem yerel ayarını belirlemek veya istenen yerel ayarın başarıyla yüklenip yüklenmediğini belirlemek için kullanılabilir. |
upcase(string) | upcase(Expression) |
Dize | Belirtilen dizeyi büyük harfe dönüştürür. |
Örnek
Aşağıdaki örnek, nokta özelliğinin özelliğini bir dizeye dönüştürür temperature
ve ardından "°F" öğesini sonuna birleştirir.
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")
)
Yukarıdaki ifade, aşağıdaki görüntüde gösterildiği gibi harita üzerinde "64°F" üzerine yer paylaşımlı bir raptiye oluşturur.
İlişkilendirme ve adım ifadeleri
Ara değer ve adım ifadeleri, ilişkilendirilmiş bir eğri veya adım işlevi boyunca değerleri hesaplamak için kullanılabilir. Bu ifadeler, giriş olarak sayısal bir değer döndüren bir ifade alır, örneğin get("temperature")
. Giriş değeri, enterpolasyon eğrisine veya adım işlevine en uygun değeri belirlemek için giriş ve çıkış değerleri çiftlerine göre değerlendirilir. Çıkış değerleri "stop" olarak adlandırılır. Her durağın giriş değerleri bir sayı olmalı ve artan sırada olmalıdır. Çıkış değerleri bir sayı, sayı dizisi veya renk olmalıdır.
İfadeyi ilişkilendirme
Bir interpolate
ifade, durdurma değerleri arasında ilişkilendirme yaparak sürekli, düzgün bir değer kümesi hesaplamak için kullanılabilir. interpolate
Renk değerleri döndüren ifade, sonuç değerlerinin seçildiği bir renk gradyanı oluşturur. İfade interpolate
aşağıdaki biçimlere sahiptir:
//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)
bir interpolate
ifadede kullanılabilecek üç tür ilişkilendirme yöntemi vardır:
Veri Akışı Adı | Açıklama |
---|---|
linear() |
Durak çifti arasında doğrusal olarak ara değer oluşturur. |
exponential(number) | exponential(Expression) |
Duraklar arasında üstel olarak ara değer oluşturur. Bir "taban" belirtilir ve çıkışın artma hızını denetler. Daha yüksek değerler, çıkışın aralığın üst ucuna doğru daha fazla artmasına neden olur. 1'e yakın bir "temel" değer, daha doğrusal olarak artan bir çıkış üretir. |
cubicBezier(number x1, number y1, number x2, number y2) | cubicBezier(Expression x1, Expression y1, Expression x2, Expression y2) |
Verilen denetim noktaları tarafından tanımlanan kübik Bezier eğrisini kullanarak ilişkilendirmeler. |
İfade stop
biçimine stop(stop, value)
sahiptir.
Aşağıda, bu farklı ilişkilendirme türlerinin nasıl göründüğüne bir örnek verilmiştir.
Doğrusal | Üstel | Bezier Küp |
---|---|---|
Örnek
Aşağıdaki örnek, nokta özelliğinin bubbleColor
özelliğine göre bir kabarcık katmanının temperature
özelliğini ayarlamak için bir ifade kullanırlinear interpolate
. temperature
Değer 60'tan küçükse "mavi" döndürülür. 60 ile 70'in altındaysa sarı döndürülür. 70 ile 80'den küçükse "turuncu" (#FFA500
) döndürülür. 80 veya daha büyükse "kırmızı" döndürülür.
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))
)
)
)
Aşağıdaki görüntüde, yukarıdaki ifade için renklerin nasıl seçildiğini gösterilmektedir.
Adım ifadesi
İfadestep
, duraklar tarafından tanımlanan parçalı sabit bir işlev değerlendirilerek ayrık, basamaklı sonuç değerlerini hesaplamak için kullanılabilir.
İfade interpolate
aşağıdaki biçimlere sahiptir:
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)
Adım ifadeleri, giriş değerinden hemen önce durdurmanın çıkış değerini veya giriş ilk duraktan küçükse ilk giriş değerini döndürür.
Örnek
Aşağıdaki örnek, nokta özelliğinin bubbleColor
özelliğine göre bir kabarcık katmanının temperature
özelliğini ayarlamak için bir ifade kullanırstep
. temperature
Değer 60'tan küçükse "mavi" döndürülür. 60 ile 70'ten küçükse "sarı" döndürülür. 70 ile 80'den küçükse "turuncu" döndürülür. 80 veya daha büyükse "kırmızı" döndürülür.
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))
)
)
)
Aşağıdaki görüntüde, yukarıdaki ifade için renklerin nasıl seçildiğini gösterilmektedir.
Katmana özgü ifadeler
Yalnızca belirli katmanlara uygulanan özel ifadeler.
Isı haritası yoğunluk ifadesi
Isı haritası yoğunluk ifadesi, bir ısı haritası katmanındaki her piksel için ısı haritası yoğunluk değerini alır ve olarak heatmapDensity
tanımlanır. Bu değer ile 1
arasında 0
bir sayıdır. Isı haritasını renklendirmek için kullanılan renk gradyanını tanımlamak için bir interpolation
veya step
ifadesiyle birlikte kullanılır. Bu ifade yalnızca ısı haritası katmanı seçeneğinde heatmapColor
kullanılabilir.
İpucu
Dizin 0'daki bir ilişkilendirme ifadesindeki renk veya adım renginin varsayılan rengi, veri bulunmayan alanın rengini tanımlar. Dizin 0'daki renk, arka plan rengi tanımlamak için kullanılabilir. Çoğu kişi bu değeri saydam veya yarı saydam siyah olarak ayarlamayı tercih eder.
Örnek
Bu örnekte, ısı haritasının işlenmesi için düzgün bir renk gradyanı oluşturmak için bir liner ilişkilendirme ifadesi kullanılır.
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")))
)
)
)
Isı haritasını renklendirmek için düz gradyan kullanmanın yanı sıra, renkler bir ifade kullanılarak step
bir dizi aralık içinde belirtilebilir. Isı haritasını renklendirmeye yönelik bir step
ifade kullanmak, yoğunluğu bir kontur veya radar stili haritaya benzeyen aralıklara böler.
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))
)
)
)
Daha fazla bilgi için Isı haritası katmanı ekleme belgelerine bakın.
Satır ilerleme durumu ifadesi
Çizgi ilerleme ifadesi, bir çizgi katmanındaki gradyan çizgi boyunca ilerleme durumunu alır ve olarak lineProgress()
tanımlanır. Bu değer 0 ile 1 arasında bir sayıdır. Bir veya step
ifadesiyle birlikte interpolation
kullanılır. Bu ifade yalnızca çizgi katmanı seçeneğiyle strokeGradient
kullanılabilir.
Not
strokeGradient
Çizgi katmanı seçeneği, veri kaynağı seçeneğinin olarak ayarlanmasını true
gerektirirlineMetrics
.
Örnek
Bu örnek, bir çizginin lineProgress()
vuruşu için renk gradyanı uygulamak için ifadeyi kullanır.
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))
)
)
)
Metin alanı biçim ifadesi
İfade, format
karma metin biçimlendirmesi sağlamak için simge katmanı seçeneğiyle textField
birlikte kullanılabilir. Bu ifade, metin alanına eklenecek dize ve kümesi formatOptions
belirten bir veya daha fazla formatEntry
ifade alır.
Expression | Açıklama |
---|---|
format(Expression...) |
Karışık biçimli metin alanı girişlerinde kullanılmak üzere ek açıklamalar içeren biçimlendirilmiş metin döndürür. |
formatEntry(Expression text) | formatEntry(Expression text, Expression.FormatOption... formatOptions) | formatEntry(String text) | formatEntry(String text, Expression.FormatOption... formatOptions) |
İfadede kullanılmak üzere biçimlendirilmiş bir dize girdisi format döndürür. |
Aşağıdaki biçim seçenekleri şunlardır:
Expression | Açıklama |
---|---|
formatFontScale(number) | formatFontScale(Expression) |
Yazı tipi boyutu için ölçeklendirme faktörünü belirtir. Belirtilirse, bu değer tek tek dizenin özelliğini geçersiz kılar textSize . |
formatTextFont(string[]) | formatTextFont(Expression) |
İşleme sırasında metne uygulanacak rengi belirtir. |
Örnek
Aşağıdaki örnek, kalın yazı tipi ekleyerek ve özelliğin özelliğinin yazı tipi boyutunu title
artırarak metin alanını biçimlendirmektedir. Bu örnek ayrıca özelliğin subTitle
özelliğini ölçeği azaltılmış yazı tipi boyutuyla yeni bir satıra ekler.
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))
)
)
)
Bu katman, nokta özelliğini aşağıdaki görüntüde gösterildiği gibi işler:
Yakınlaştırma ifadesi
bir zoom
ifade, işleme zamanında haritanın geçerli yakınlaştırma düzeyini almak için kullanılır ve olarak zoom()
tanımlanır. Bu ifade, haritanın en düşük ve en yüksek yakınlaştırma düzeyi aralığı arasında bir sayı döndürür. Web ve Android için Azure Haritalar etkileşimli harita denetimleri, 0 ile 24 arasında numaralandırılmış 25 yakınlaştırma düzeyini destekler. İfadenin kullanılması, haritanın zoom
yakınlaştırma düzeyi değiştikçe stillerin dinamik olarak değiştirilmesini sağlar. İfade zoom
yalnızca ve step
ifadeleriyle interpolate
kullanılabilir.
Örnek
Varsayılan olarak, ısı haritası katmanında işlenen veri noktalarının yarıçapı tüm yakınlaştırma düzeyleri için sabit bir piksel yarıçapı vardır. Harita yakınlaştırıldıkça, veriler bir araya toplanır ve ısı haritası katmanı farklı görünür. Her zoom
bir veri noktasının haritanın aynı fiziksel alanını kaplaması için her yakınlaştırma düzeyi için yarıçapı ölçeklendirmek için bir ifade kullanılabilir. Isı haritası katmanının daha statik ve tutarlı görünmesini sağlar. Haritanın her yakınlaştırma düzeyi, önceki yakınlaştırma düzeyinin iki katı kadar dikey ve yatay piksele sahiptir. Yarıçapı her yakınlaştırma düzeyiyle ikiye katlayarak ölçeklendirmek, tüm yakınlaştırma düzeylerinde tutarlı görünen bir ısı haritası oluşturur. Aşağıda gösterildiği gibi2 * Math.pow(2, minZoom - maxZoom)
, en base 2 exponential interpolation
düşük yakınlaştırma düzeyi için piksel yarıçapı ayarlanmış ve maksimum yakınlaştırma düzeyi için ölçeklendirilmiş yarıçap hesaplanmış bir ifade ile ifade kullanılarak zoom
gerçekleştirilebilir.
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))
)
)
)
Değişken bağlama ifadeleri
Değişken bağlama ifadeleri bir hesaplamanın sonuçlarını bir değişkende depolar. Bu nedenle, hesaplama sonuçlarına ifadenin başka bir yerinde birden çok kez başvurulabilmesini sağlar. Birçok hesaplama içeren ifadeler için kullanışlı bir iyileştirmedir.
Expression | Dönüş türü | Açıklama |
---|---|---|
let(Expression... input) |
Bir veya daha fazla değeri, sonucu döndüren alt ifadede ifadesi tarafından var kullanılmak üzere değişken olarak depolar. |
|
var(Expression expression) | var(string variableName) |
Object | ifadesi kullanılarak oluşturulan bir değişkene başvurur let . |
Örnek
Bu örnekte, sıcaklık oranına göre geliri hesaplayan ve ardından bu değer üzerinde farklı boole işlemlerini değerlendirmek için bir ifade kullanan bir case
ifade kullanılır. İfade let
, geliri sıcaklık oranına göre depolamak için kullanılır, böylece yalnızca bir kez hesaplanması gerekir. İfade, var
bu değişkeni yeniden hesaplamaya gerek kalmadan gerektiği kadar sık başvurur.
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)
)
)
)
)
Sonraki adımlar
İfadeleri destekleyen katmanlar hakkında daha fazla bilgi edinin: