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 edö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 PIdö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 truefalse ise döndürürtrue, aksi takdirde.
any(Expression...) boolean Girişlerden truefalse 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 truefalse .
not(Expression | boolean) boolean Mantıksal olumsuzlama. Giriş ise falseve false girişi ise truedö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 trueve 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 nullayarlandı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 0255aralığı olması gereken kırmızı, yeşil ve mavi bileşenlerden ve bir alfa bileşeninden 1bir 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 255ile aralığındaki bir alfa bileşeninden 10 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 255değ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.

Dize işleci ifade örneği

İ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
Doğrusal ilişkilendirme grafı Üstel ilişkilendirme grafı Kübik Bezier ilişkilendirme grafiği

Ö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.

İfadeyi ilişkilendirme örneği

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.

Adım ifadesi örneği

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 heatmapDensitytanımlanır. Bu değer ile 1arası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ı truegerektirirlineMetrics.

Ö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))
        )
    )
)

Canlı örne bakın

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:

Biçimlendirilmiş metin alanıyla Nokta özelliğinin görüntüsü

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: