Megosztás a következőn keresztül:


Adatvezérelt stíluskifejezések (webes SDK)

A kifejezések lehetővé teszik, hogy üzleti logikát alkalmazzon olyan stílusbeállításokra, amelyek az adatforrás egyes alakzataiban meghatározott tulajdonságokat figyelik meg. A kifejezések szűrhetik az adatforrásokban vagy rétegekben lévő adatokat. A kifejezések feltételes logikából, például ha-utasításokból állhatnak. Ezek felhasználhatók az adatok módosítására: sztring operátorok, logikai operátorok és matematikai operátorok használatával.

Az adatvezérelt stílusok csökkentik a stílussal kapcsolatos üzleti logika implementálásához szükséges kód mennyiségét. Rétegek használata esetén a kifejezések kiértékelése renderelési időben történik egy külön szálon. Ez a funkció nagyobb teljesítményt nyújt a felhasználói felületi szál üzleti logikájának kiértékeléséhez képest.

Ez a videó áttekintést nyújt az adatvezérelt stílusokról az Azure Térképek Webes SDK-ban.


A kifejezések JSON-tömbökként jelennek meg. A tömb egyik kifejezésének első eleme egy sztring, amely megadja a kifejezés operátorának nevét. Például:"+" vagy "kis- és nagybetű". A következő elemek (ha vannak ilyenek) a kifejezés argumentumai. Minden argumentum egy literálérték (sztring, szám, logikai vagy ) vagy nullegy másik kifejezéstömb. Az alábbi pszeudokód egy kifejezés alapstruktúráját határozza meg.

[ 
    expression_operator, 
    argument0, 
    argument1, 
    …
] 

Az Azure Térképek Web SDK számos típusú kifejezést támogat. A kifejezések önállóan vagy más kifejezésekkel kombinálva is használhatók.

A kifejezések típusa Leírás
Összesítő kifejezés Olyan kifejezés, amely egy adathalmazon keresztül feldolgozott számítást határoz meg, és egy lehetőséggel clusterPropertiesDataSourcehasználható.
Logikai kifejezések A logikai kifejezések logikai operátor-kifejezések készletét biztosítják a logikai összehasonlítások kiértékeléséhez.
Színkifejezések A színkifejezések megkönnyítik a színértékek létrehozását és kezelését.
Feltételes kifejezések A feltételes kifejezések olyan logikai műveleteket biztosítanak, mint az if-utasítások.
Adatkifejezések Hozzáférést biztosít a tulajdonságadatokhoz egy szolgáltatásban.
Interpolátum- és lépéskifejezések Interpolátum- és lépéskifejezések használhatók az interpolált görbe vagy lépésfüggvény értékeinek kiszámítására.
Rétegspecifikus kifejezések Speciális kifejezések, amelyek csak egyetlen rétegre alkalmazhatók.
Matematikai kifejezések Matematikai operátorokat biztosít az adatvezérelt számítások elvégzéséhez a kifejezési keretrendszeren belül.
Sztring operátorkifejezések A sztring operátorkifejezések olyan sztringeken hajtanak végre konverziós műveleteket, mint az eset összefűzése és konvertálása.
Típuskifejezések A típuskifejezések különböző adattípusok, például sztringek, számok és logikai értékek teszteléséhez és konvertálásához nyújtanak eszközöket.
Változó kötési kifejezések A változókötési kifejezések egy változóban tárolják a számítás eredményeit, és többször hivatkoznak egy kifejezés más részeire anélkül, hogy újra kellene számolni a tárolt értéket.
Nagyítási kifejezés Lekéri a térkép aktuális nagyítási szintjét a megjelenítési időpontban.

A dokumentum összes példája a következő funkcióval mutatja be a különböző típusú kifejezések különböző felhasználási módjait.

{
    "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"
        }
    }
}

Adatkifejezések

Az adatkifejezések hozzáférést biztosítanak a tulajdonságadatokhoz egy szolgáltatásban.

Expression Visszatérési típus Leírás
['at', number, array] Érték Egy elemet kér le egy tömbből.
['geometry-type'] sztring Lekéri a funkció geometriai típusát: Pont, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon.
['get', string] Érték Lekéri a tulajdonság értékét az aktuális szolgáltatás tulajdonságaiból. Null értéket ad vissza, ha a kért tulajdonság hiányzik.
['get', string, object] Érték Lekéri a tulajdonság értékét a megadott objektum tulajdonságaiból. Null értéket ad vissza, ha a kért tulajdonság hiányzik.
['has', string] Logikai Meghatározza, hogy egy szolgáltatás tulajdonságai rendelkeznek-e a megadott tulajdonsággal.
['has', string, object] Logikai Meghatározza, hogy az objektum tulajdonságai rendelkeznek-e a megadott tulajdonsággal.
['id'] Érték Lekéri a szolgáltatás azonosítóját, ha rendelkezik ilyen azonosítóval.
['in', boolean | string | number, array] Logikai Meghatározza, hogy létezik-e elem egy tömbben
['in', substring, string] Logikai Meghatározza, hogy létezik-e részsztring egy sztringben
['index-of', boolean | string | number, array | string]

['index-of', boolean | string | number, array | string, number]
number Azt az első pozíciót adja vissza, amelyben egy elem található egy tömbben vagy egy sztringben, vagy -1 ha a bemenet nem található. Egy választható indexet fogad el a keresés megkezdéséhez.
['length', string | array] number Egy sztring vagy tömb hosszát adja meg.
['slice', array | string, number]

['slice', array | string, number, number]
sztring | Tömb Egy tömbből vagy egy sztringből származó részsztringet ad vissza egy megadott kezdőindexből, illetve egy kezdőindex és egy záróindex között, ha be van állítva. A visszatérési érték a kezdő indexet tartalmazza, a záró indexet nem.

Példák

A funkciók tulajdonságai közvetlenül egy kifejezésben érhetők el egy get kifejezés használatával. Ez a példa a zoneColor funkció értékét használja egy buborékréteg színtulajdonságának megadásához.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: ['get', 'zoneColor'] //Get the zoneColor value.
});

A fenti példa jól működik, ha az összes pontfunkció rendelkezik a zoneColor tulajdonsággal. Ha nem, a szín alapértelmezés szerint "fekete". A tartalék szín módosításához a kifejezéssel has együtt használva case ellenőrizze, hogy létezik-e a tulajdonság. Ha a tulajdonság nem létezik, visszatérési színt ad vissza.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'case', //Use a conditional case expression.

        ['has', 'zoneColor'],   //Check to see if feature has a "zoneColor" property
        ['get', 'zoneColor'],   //If it does, use it.

        'blue'  //If it doesn't, default to blue.
    ]
});

A buborék- és szimbólumrétegek alapértelmezés szerint az adatforrás összes alakzatának koordinátáit jelenítik meg. Ez a viselkedés kiemelheti a sokszög vagy a vonal csúcsait. A filter réteg beállításával korlátozhatja a renderelt funkciók geometriai típusát egy ['geometry-type'] logikai kifejezésen belüli kifejezés használatával. Az alábbi példa korlátozza a buborékréteget, hogy csak Point a funkciók legyenek renderelve.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    filter: ['==', ['geometry-type'], 'Point']
});

Az alábbi példa lehetővé teszi mind a MultiPoint két Point funkció megjelenítését.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    filter: ['any', ['==', ['geometry-type'], 'Point'], ['==', ['geometry-type'], 'MultiPoint']]
});

Hasonlóképpen, a sokszögek körvonala vonalrétegekben jelenik meg. Ha le szeretné tiltani ezt a viselkedést egy vonalrétegben, adjon hozzá egy szűrőt, amely csak engedélyezi LineString és MultiLineString funkciókkal rendelkezik.

Íme néhány további példa az adatkifejezések használatára:

//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']]

//Gets the index of the value 'b' in an array "properties.abcArray.indexOf('b')" = 1
['index-of', 'b', ['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']]

//Slice an array starting at index 2 "properties.abcArray.slice(2)" = ['c']
['slice', ['get', 'abcArray'], 2]

//Slice a string from index 0 to index 4 "properties.entityType.slice(0, 4)" = 'rest'
['slice', ['get', 'entityType'], 0, 4]

Matematikai kifejezések

A matematikai kifejezések matematikai operátorokat biztosítanak az adatvezérelt számítások elvégzéséhez a kifejezés keretrendszerében.

Expression Visszatérési típus Leírás
['+', number, number, …] number Kiszámítja a megadott számok összegét.
['-', number] number Kivonja a 0 értéket a megadott számmal.
['-', number, number] number Kivonja az első számokat a második számmal.
['*', number, number, …] number Összeszorozza a megadott számokat.
['/', number, number] number Az első számot a második számmal osztja el.
['%', number, number] number Kiszámítja a maradékot, amikor az első számot a második számmal osztja el.
['^', number, number] number Kiszámítja a második szám hatványára emelt első érték értékét.
['abs', number] number Kiszámítja a megadott szám abszolút értékét.
['acos', number] number Kiszámítja a megadott szám arckozzinját.
['asin', number] number Kiszámítja a megadott szám arczinuszát.
['atan', number] number Kiszámítja a megadott szám arkusztangensét.
['ceil', number] number A számot felfelé kerekíti a következő egész számra.
['cos', number] number Kiszámítja a megadott szám cos értékét.
['distance', Point \| MultiPoint \| LineString \| MultiLineString \| Polygon \| MultiPolygon \| Feature \| FeatureCollection] number Kiszámítja a mért értékek legrövidebb távolságát a kiértékelt funkció és a bemeneti geometria között. A visszaadott távolságértékek pontossága a kódolási geometriák pontosságának csökkenése miatt változhat, különösen a 13. nagyítási szint alatt.
['e'] number A matematikai állandót eadja vissza.
['floor', number] number A számot lefelé kerekíti az előző egész egész számra.
['ln', number] number Kiszámítja a megadott szám természetes logaritmusát.
['ln2'] number A matematikai állandót ln(2)adja vissza.
['log10', number] number Kiszámítja a megadott szám tízes logaritmusát.
['log2', number] number Kiszámítja a megadott szám kettőből álló logaritmusát.
['max', number, number, …] number Kiszámítja a megadott számkészlet maximális számát.
['min', number, number, …] number Kiszámítja a megadott számhalmaz minimális számát.
['pi'] number A matematikai állandót PIadja vissza.
['round', number] number A számot a legközelebbi egész számra kerekíti. A félúti értékek nullától távolra vannak kerekítve. Például kiértékeli a ['round', -1.5] következőt -2: .
['sin', number] number Kiszámítja a megadott szám szinuszát.
['sqrt', number] number Kiszámítja a megadott szám négyzetgyökét.
['tan', number] number Kiszámítja a megadott szám tangensét.

Összesítő kifejezés

Az aggregátumkifejezések olyan számítást határoznak meg, amelyet egy adatkészleten dolgoznak fel, és egy lehetőséggel DataSourcehasználhatókclusterProperties. Ezeknek a kifejezéseknek a kimenetének számnak vagy logikainak kell lennie.

Az összesítő kifejezés három értékből áll: egy operátori értékből és egy kezdeti értékből, valamint egy olyan kifejezésből, amely egy tulajdonságot kér le az adatok egyes funkcióiból az összesítő művelet alkalmazásához. A kifejezés formátuma a következő:

[operator: string, initialValue: boolean | number, mapExpression: Expression]
  • operátor: Egy kifejezésfüggvény, amely ezután a fürt minden pontjára kiszámított mapExpression összes értékre vonatkozik. Támogatott operátorok:
    • Számok esetén: +, *, , maxmin
    • Logikai értékek esetén: all, any
  • initialValue: Az a kezdeti érték, amelyben az első számított érték összesítve van.
  • mapExpression: Az adatkészlet minden pontjára alkalmazott kifejezés.

Példák

Ha egy adathalmaz összes funkciója rendelkezik egy revenue tulajdonsággal, amely szám. Ezután kiszámítható egy fürt összes pontjának teljes bevétele, amely az adatkészletből jön létre. Ez a számítás a következő összesített kifejezés használatával történik: ['+', 0, ['get', 'revenue']]

Halmozott kifejezés

A accumulated kifejezés egy eddig felhalmozott fürttulajdonság értékét kapja meg, amelyet egy clusterProperties fürtözött DataSource forrás beállításában használnak.

Használat

["accumulated"]

Logikai kifejezések

A logikai kifejezések logikai operátor-kifejezések készletét biztosítják a logikai összehasonlítások kiértékeléséhez.

Az összehasonlítás szigorúan be van állítva az értékek összehasonlításakor. A különböző típusú értékek mindig egyenlőtlennek minősülnek. Érvénytelennek minősülnek azok az esetek, amikor a típusok ismerten eltérőek az elemzési időpontban, és elemzési hibát okoznak.

Expression Visszatérési típus Leírás
['!', boolean] Logikai Logikai tagadás. Visszaadjatrue, ha a bemenet az false, és false ha a bemenet .true
['!=', value, value] Logikai Akkor adja true vissza, ha a bemeneti értékek nem egyenlőek, false ellenkező esetben.
['<', value, value] Logikai Akkor adja true vissza, ha az első bemenet szigorúan kisebb, mint a második, false ellenkező esetben. Az argumentumoknak sztringeknek vagy mindkét számnak kell lenniük.
['<=', value, value] Logikai Akkor adja true vissza, ha az első bemenet kisebb vagy egyenlő a másodiknál, false ellenkező esetben. Az argumentumoknak sztringeknek vagy mindkét számnak kell lenniük.
['==', value, value] Logikai Akkor adja true vissza, ha a bemeneti értékek egyenlőek, false ellenkező esetben. Az argumentumoknak sztringeknek vagy mindkét számnak kell lenniük.
['>', value, value] Logikai Akkor adja true vissza, ha az első bemenet szigorúan nagyobb a másodiknál, false ellenkező esetben. Az argumentumoknak sztringeknek vagy mindkét számnak kell lenniük.
['>=' value, value] Logikai Akkor adja true vissza, ha az első bemenet nagyobb vagy egyenlő a másodiknál, false ellenkező esetben. Az argumentumoknak sztringeknek vagy mindkét számnak kell lenniük.
['all', boolean, boolean, …] Logikai Akkor adja true vissza, ha az összes bemenet másként vantruefalse.
['any', boolean, boolean, …] Logikai Akkor adja true vissza, ha a bemenetek bármelyike másként vantruefalse.
['within', Polygon | MultiPolygon | Feature<Polygon | MultiPolygon>] Logikai Akkor adja true vissza, ha a kiértékelt funkció teljes mértékben a bemeneti geometria határán belül található, máskülönben hamis. A bemeneti érték lehet érvényes GeoJSON típusú Polygon, MultiPolygonvagy FeatureFeatureCollection. Támogatott funkciók az értékeléshez:

- Pont: Akkor ad false vissza, ha egy pont a határon van, vagy a határon kívül esik.
- LineString: Visszaadja false , ha egy vonal bármely része kívül esik a határon, a vonal metszi a határt, vagy egy vonal végpontja a határon van.

Feltételes kifejezések

A feltételes kifejezések olyan logikai műveleteket biztosítanak, mint az if-utasítások.

Az alábbi kifejezések feltételes logikai műveleteket hajtanak végre a bemeneti adatokon. A kifejezés például "if/then/else" logikát biztosít, case míg a match kifejezés olyan, mint egy "kapcsolóutasítás".

Kis- és nagybetűk kifejezése

A case kifejezések olyan feltételes kifejezések, amelyek "if/then/else" logikát biztosítanak. Ez a kifejezéstípus végigvezeti a logikai feltételek listáján. Az első logikai feltétel kimeneti értékét adja vissza, amely igaz értéket ad vissza.

Az alábbi pszeudokód határozza meg a kifejezés szerkezetét case .

[
    'case',
    condition1: boolean, 
    output1: value,
    condition2: boolean, 
    output2: value,
    ...,
    fallback: value
]

Example

Az alábbi példa végigvezeti a különböző logikai feltételeket, amíg meg nem találja azt, amely kiértékeli true, majd visszaadja a társított értéket. Ha nem történik logikai feltétel kiértékelése true, a függvény tartalék értéket ad vissza.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'case',

        //Check to see if the first boolean expression is true, and if it is, return its assigned result.
        ['has', 'zoneColor'],
        ['get', 'zoneColor'],

        //Check to see if the second boolean expression is true, and if it is, return its assigned result.
        ['all', ['has', ' temperature '], ['>', ['get', 'temperature'], 100]],
        'red',

        //Specify a default value to return.
        'green'
    ]
});

Kifejezés egyeztetése

A match kifejezések olyan feltételes kifejezések, amelyek kapcsolóutasítást, például logikát biztosítanak. A bemenet lehet bármilyen kifejezés, például ['get', 'entityType'] egy sztring vagy egy szám visszaadása. Minden címkének egyetlen literálértéknek vagy konstansértékek tömbjének kell lennie, amelyek értékeinek minden sztringnek vagy számnak kell lenniük. A bemenet megegyezik, ha a tömb bármelyik értéke megegyezik. Minden címkének egyedinek kell lennie. Ha a bemeneti típus nem egyezik meg a címkék típusával, az eredmény a tartalék érték.

Az alábbi pszeudokód határozza meg a kifejezés szerkezetét match .

[
    'match',
    input: number | string,
    label1: number | string | (number | string)[], 
    output1: value,
    label2: number | string | (number | string)[], 
    output2: value,
    ...,
    fallback: value
]

Példák

Az alábbi példa egy entityType pont funkció tulajdonságát vizsgálja egy buborékrétegben, és egyezést keres. Ha talál egyezést, a megadott értéket adja vissza, vagy a tartalék értéket adja vissza.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'match',

        //Get the property to match.
        ['get', 'entityType'],

        //List the values to match and the result to return for each match.
        'restaurant', 'red',
        'park', 'green',

        //Specify a default value to return if no match is found.
        'black'
    ]
});

Az alábbi példa egy tömb használatával listáz egy olyan címkéket, amelyeknek ugyanazt az értéket kell visszaadnia. Ez a megközelítés sokkal hatékonyabb, mint az egyes címkék egyenkénti felsorolása. Ebben az esetben, ha a entityType tulajdonság "étterem" vagy "grocery_store", a "piros" szín lesz visszaadva.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'match',

        //Get the property to match.
        ['get', 'entityType'],

        //List the values to match and the result to return for each match.
        ['restaurant', 'grocery_store'], 'red',

        'park', 'green',

        //Specify a default value to return if no match is found.
        'black'
    ]
});

Coalesce kifejezés

Egy coalesce kifejezés végiglép egy kifejezéskészleten, amíg az első nem null értéket be nem nyeri, és visszaadja azt.

Az alábbi pszeudokód határozza meg a kifejezés szerkezetét coalesce .

[
    'coalesce', 
    value1, 
    value2, 
    …
]

Example

Az alábbi példa egy kifejezéssel coalesce állítja be a textField szimbólumréteg beállítását. Ha a title tulajdonság hiányzik a funkcióból, vagy be van állítva null, a kifejezés megpróbálja megkeresni a subTitle tulajdonságot, ha hiányzik, vagy nullegy üres sztringre esik vissza.

var layer = new atlas.layer.SymbolLayer(datasource, null, {
    textOptions: {
        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.
            ''
        ]
    }
});

Az alábbi példa egy coalesce kifejezéssel kéri le a térkép sprite-jében elérhető első elérhető képikont a megadott képnevek listájából.

var layer = new atlas.layer.SymbolLayer(datasource, null, {
    iconOptions: {
        image: [
            'coalesce',

            //Try getting the image with id 'missing-image'.
            ['image', 'missing-image'],

            //Specify an image id to fallback to. 
            'marker-blue'
        ]
    }
});

Típuskifejezések

A típuskifejezések különböző adattípusok, például sztringek, számok és logikai értékek teszteléséhez és konvertálásához nyújtanak eszközöket.

Expression Visszatérési típus Leírás
['array', value] | ['array', type: "string" | "number" | "boolean", value] Objektum[] Azt állítja, hogy a bemenet tömb.
['boolean', value] | ["boolean", value, fallback: value, fallback: value, ...] Logikai Azt állítja, hogy a bemeneti érték logikai érték. Ha több érték van megadva, mindegyik kiértékelése sorrendben történik, amíg logikai értéket nem kap. Ha egyik bemenet sem logikai érték, a kifejezés hiba.
['collator', { 'case-sensitive': boolean, 'diacritic-sensitive': boolean, 'locale': string }] collator Egy rendezőt ad vissza a területi beállítástól függő összehasonlító műveletekhez. A kis- és nagybetűk megkülönböztetése alapértelmezés szerint hamis. A területi argumentum a használni kívánt területi beállítás IETF nyelvi címkéjét adja meg. Ha nincs megadva, a rendszer az alapértelmezett területi beállítást használja. Ha a kért területi beállítás nem érhető el, a collator rendszer által definiált tartalék területi beállításokat használ. A területi beállítás használatával tesztelje a területi tartalék viselkedés eredményeit.
['literal', array]

['literal', object]
tömb | Objektum Literális tömböt vagy objektumértéket ad vissza. Ezzel a kifejezéssel megakadályozhatja, hogy egy tömb vagy objektum kifejezésként legyen kiértékelve, ami akkor szükséges, ha egy tömböt vagy objektumot egy kifejezés ad vissza.
['image', string] sztring Ellenőrzi, hogy egy megadott képazonosító van-e betöltve a térképek kép sprite-jába. Ha igen, az azonosítót adja vissza, ellenkező esetben null értéket ad vissza.
['number', value] | ["number", value, fallback: value, fallback: value, ...] number Azt állítja, hogy a bemeneti érték szám. Ha több érték van megadva, a rendszer mindet sorrendben értékeli ki, amíg egy számot nem szerez be. Ha egyik bemenet sem szám, a kifejezés hiba.
['object', value] | ["object", value, fallback: value, fallback: value, ...] Object Azt állítja, hogy a bemeneti érték egy objektum. Ha több érték van megadva, mindegyik kiértékelése sorrendben történik, amíg egy objektumot nem szerez be. Ha egyik bemenet sem objektum, a kifejezés hiba.
['string', value] | ["string", value, fallback: value, fallback: value, ...] sztring Azt állítja, hogy a bemeneti érték egy sztring. Ha több érték van megadva, mindegyik kiértékelése sorrendben történik, amíg egy sztringet nem kap. Ha egyik bemenet sem sztring, a kifejezés hiba.
['to-boolean', value] Logikai A bemeneti értéket logikai értékké alakítja. Az eredmény az, false ha a bemenet egy üres sztring , 0, falsenullvagy NaN; egyébként annak true.
['to-color', value]

['to-color', value1, value2…]
color A bemeneti értéket színsé alakítja. Ha több érték van megadva, mindegyik kiértékelése sorrendben történik az első sikeres átalakításig. Ha egyik bemenet sem konvertálható, a kifejezés hiba.
['to-number', value]

['to-number', value1, value2, …]
number Ha lehetséges, számmá alakítja a bemeneti értéket. Ha a bemenet vagy nullfalse, az eredmény 0. Ha a bemenet az true, az eredmény 1. Ha a bemenet sztring, akkor az ECMAScript Nyelvi specifikáció ToNumber sztringfüggvényének használatával számmá alakul. Ha több érték van megadva, mindegyik kiértékelése sorrendben történik az első sikeres átalakításig. Ha egyik bemenet sem konvertálható, a kifejezés hiba.
['to-string', value] sztring A bemeneti értéket sztringgé alakítja. Ha a bemenet az null, akkor az eredmény ."" Ha a bemenet logikai érték, akkor az eredmény vagy "true""false". Ha a bemenet szám, akkor a rendszer sztringgé alakítja az ECMAScript nyelvi specifikáció ToString számfüggvényével. Ha a bemenet egy szín, akkor CSS RGBA színsztringgé "rgba(r,g,b,a)"lesz konvertálva. Ellenkező esetben a bemenet sztringgé alakul az ECMAScript nyelvi specifikációjának JSON.stringify függvényével.
['typeof', value] sztring A megadott érték típusát leíró sztringet ad vissza.

Tipp.

Ha egy, a böngészőkonzolhoz Expression name must be a string, but found number instead. If you wanted a literal array, use ["literal", [...]]. hasonló hibaüzenet jelenik meg, az azt jelenti, hogy a kódban van egy olyan kifejezés, amely olyan tömböt tartalmaz, amely nem tartalmaz sztringet az első értékéhez. Ha azt szeretné, hogy a kifejezés egy tömböt ad vissza, burkolja a tömböt a literal kifejezéssel. Az alábbi példa egy szimbólumréteg ikonbeállítását offset állítja be, amelynek két számot tartalmazó tömbnek kell lennie egy kifejezéssel match , amellyel két eltolási érték közül választhat a entityType ponttulajdonság tulajdonsága alapján.

var layer = new atlas.layer.SymbolLayer(datasource, null, {
    iconOptions: {
        offset: [
            'match',

            //Get the entityType value.
            ['get', 'entityType'],

            //If the entity type is 'restaurant', return a different pixel offset. 
            'restaurant', ['literal', [0, -10]],

            //Default to value.
            ['literal', [0, 0]]
        ]
    }
});

Színkifejezések

A színkifejezések megkönnyítik a színértékek létrehozását és kezelését.

Expression Visszatérési típus Leírás
['interpolate-hcl', interpolation: ["linear"] \| ["exponential", base] \| ["cubic-bezier", x1, y1, x2, y2], input: number, stop_input_1: number, stop_output_1: Color, stop_input_n: number, stop_output_n: Color, ...] color Folyamatos, zökkenőmentes eredményeket hoz létre a bemeneti és kimeneti értékek párjai közötti interpolációval ("stop"). Így működik interpolate, de a kimeneti típusnak színnek kell lennie, az interpoláció pedig a Hue-Chroma-Luminance színtérben történik.
['interpolate-lab', interpolation: ["linear"] \| ["exponential", base] \| ["cubic-bezier", x1, y1, x2, y2], input: number, stop_input_1: number, stop_output_1: Color, stop_input_n: number, stop_output_n: Color, ...] color Folyamatos, zökkenőmentes eredményeket hoz létre a bemeneti és kimeneti értékek párjai közötti interpolációval ("stop"). Így interpolateműködik, de a kimeneti típusnak színnek kell lennie, az interpoláció pedig a CIELAB színtérben történik.
['rgb', number, number, number] color Színértéket hoz létre a piros, a zöld és a kék összetevőkből, amelyek az és 255, és az alfa összetevő között mozognak 01. Ha bármely összetevő kívül esik a tartományon, a kifejezés hiba.
['rgba', number, number, number, number] color Színértéket hoz létre a piros, a zöld és a kék összetevőkből, amelyek 0 között és 255, és egy alfa összetevőből áll, amely a 0 tartományon belül található1. Ha bármely összetevő kívül esik a tartományon, a kifejezés hiba.
['to-rgba'] [szám, szám, szám, szám] Egy négyelemű tömböt ad vissza, amely a bemeneti szín piros, zöld, kék és alfa összetevőit tartalmazza ebben a sorrendben.

Example

Az alábbi példa egy RGB-színértéket hoz létre, amely piros, 255zöld és kék értékeket tartalmaz a tulajdonság értékének temperature szorzásával2.5. A hőmérséklet változásakor a szín a vörös különböző árnyalataira változik.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'rgb', //Create a RGB color value.

        255,    //Set red value to 255.

        ['*', 2.5, ['get', 'temperature']], //Multiple the temperature by 2.5 and set the green value.

        ['*', 2.5, ['get', 'temperature']]  //Multiple the temperature by 2.5 and set the blue value.
    ]
});

Sztring operátorkifejezések

A sztring operátorkifejezések olyan sztringeken hajtanak végre konverziós műveleteket, mint az eset összefűzése és konvertálása.

Expression Visszatérési típus Leírás
['concat', string, string, …] sztring Több sztring összefűzése. Minden értéknek sztringnek kell lennie. to-string A típuskifejezéssel szükség esetén más értéktípusokat sztringgé alakíthat.
['downcase', string] sztring A megadott sztringet kisbetűssé alakítja.
['is-supported-script', string] | ['is-supported-script', Expression] Logikai Meghatározza, hogy a bemeneti sztring az aktuális betűtípuskészlet által támogatott karakterkészletet használ-e. Például: ['is-supported-script', 'ಗೌರವಾರ್ಥವಾಗಿ']
['resolved-locale', string] sztring A megadott collator által használt területi beállítás IETF nyelvi címkéjét adja vissza, amely az alapértelmezett rendszer területi beállításának meghatározására vagy a kért területi beállítások sikeres betöltésének megállapítására használható.
['upcase', string] sztring A megadott sztringet nagybetűssé alakítja.

Example

Az alábbi példa a temperature pont funkció tulajdonságát sztringgé alakítja, majd összefűzi a "°F" értéket a végéhez.

var layer = new atlas.layer.SymbolLayer(datasource, null, {
    textOptions: {
        textField: ['concat', ['to-string', ['get', 'temperature']], '°F'],

        //Some additional style options.
        offset: [0, -1.5],
        size: 12,
        color: 'white'
    }
});

A fenti kifejezés egy tűt jelenít meg a térképen, rajta a "64°F" felirattal, ahogy az az alábbi képen látható.

Screenshot of a map that demonstrates the string operator expression example.

Interpolátum- és lépéskifejezések

Interpolátum- és lépéskifejezések használhatók az interpolált görbe vagy lépésfüggvény értékeinek kiszámítására. Ezek a kifejezések olyan kifejezéseket vesznek fel, amelyek egy numerikus értéket adnak vissza bemenetként, például ['get', 'temperature']. A bemeneti érték kiértékelése bemeneti és kimeneti értékek párjaival történik, hogy meghatározza az interpolált görbe vagy lépés függvénynek leginkább megfelelő értéket. A kimeneti értékek neve "stop". Az egyes leállások bemeneti értékeinek számnak kell lenniük, és növekvő sorrendben kell lenniük. A kimeneti értékeknek számnak, számtömbnek vagy színnek kell lenniük.

Interpolációs kifejezés

A interpolate kifejezésekkel folyamatos, sima értékhalmazt számíthat ki a stop értékek közötti interpolációval. A interpolate színértékeket visszaadó kifejezés színátmenetet hoz létre, amelyben az eredményértékek ki vannak választva.

Egy kifejezésben interpolate háromféle interpolációs módszer használható:

  • ['linear'] - Lineárisan interpolál a megállók párja között.
  • ['exponential', base] - Exponenciálisan interpolál a megállók között. Az base érték szabályozza a kimenet növekedésének sebességét. A magasabb értékek növelik a kimenetet a tartomány felső vége felé. Az base 1-hez közeli értékek lineárisabban növekvő kimenetet eredményeznek.
  • ['cubic-bezier', x1, y1, x2, y2] - Interpolációk az adott vezérlőpontok által meghatározott köb Bezier-görbével .

Íme egy példa az ilyen típusú interpolációk megjelenésére.

Lineáris Exponenciális Köbös bezier
Linear interpolation graph Exponential interpolation graph Cubic Bezier interpolation graph

Az alábbi pszeudokód határozza meg a kifejezés szerkezetét interpolate .

[
    'interpolate',
    interpolation: ['linear'] | ['exponential', base] | ['cubic-bezier', x1, y1, x2, y2],
    input: number,
    stopInput1: number, 
    stopOutput1: value1,
    stopInput2: number, 
    stopOutput2: value2, 
    ...
]

Example

Az alábbi példa kifejezéssel linear interpolate állítja be egy color buborékréteg tulajdonságát a temperature pont funkció tulajdonsága alapján. Ha az temperature érték kisebb, mint 60, a "kék" értéket adja vissza. Ha 60 és 70 év közötti, akkor a sárga lesz a visszaadott érték. Ha 70 és 80-nál kevesebb között van, a "narancssárga" érték lesz visszaadva. Ha 80 vagy annál nagyobb, a "piros" értéket adja vissza.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'interpolate',
        ['linear'],
        ['get', 'temperature'],
        50, 'blue',
        60, 'yellow',
        70, 'orange',
        80, 'red'
    ]
});

Az alábbi kép bemutatja, hogyan vannak kiválasztva a színek a fenti kifejezéshez.

Interpolate expression example

Lépéskifejezés

Egy step kifejezés használható a különálló, lépcsőzetes eredményértékek kiszámítására a stopok által meghatározott, darabonkénti állandó függvény kiértékelésével.

Az alábbi pszeudokód határozza meg a kifejezés szerkezetét step .

[
    'step',
    input: number,
    output0: value0,
    stop1: number, 
    output1: value1,
    stop2: number, 
    output2: value2, 
    ...
]

A lépéskifejezések a leállítás kimeneti értékét adja vissza a bemeneti érték előtt, vagy az első bemeneti értéket, ha a bemenet kisebb, mint az első leállítás.

Example

Az alábbi példa kifejezéssel step állítja be egy color buborékréteg tulajdonságát a temperature pont funkció tulajdonsága alapján. Ha az temperature érték kisebb, mint 60, a "kék" értéket adja vissza. Ha 60 és kevesebb mint 70 között van, a "sárga" értéket adja vissza. Ha 70 és 80-nál kevesebb között van, a "narancssárga" érték lesz visszaadva. Ha 80 vagy annál nagyobb, a "piros" értéket adja vissza.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'step',
        ['get', 'temperature'],
        'blue',
        60, 'yellow',
        70, 'orange',
        80, 'red'
    ]
});

Az alábbi kép bemutatja, hogyan vannak kiválasztva a színek a fenti kifejezéshez.

Step expression example

Rétegspecifikus kifejezések

Speciális kifejezések, amelyek csak adott rétegekre vonatkoznak.

Hőtérkép sűrűségkifejezése

A hőtérkép sűrűségkifejezése lekéri a hőtérkép minden képpontjának sűrűségértékét egy hőtérképrétegben, és a következőképpen van definiálva ['heatmap-density']: . Ez az érték a kettő közötti 01szám. A színátmenet a hőtérkép színezéséhez használt színátmenet meghatározására szolgál egy vagy step több interpolation kifejezéssel kombinálva. Ez a kifejezés csak a hőtérképréteg színbeállításában használható.

Tipp.

A 0 indexben lévő szín egy interpolációs kifejezésben vagy egy lépésszín alapértelmezett színében határozza meg annak a területnek a színét, ahol nincsenek adatok. A 0. index színével definiálhat háttérszínt. Sokan inkább transzparensre vagy félig átlátszó feketére állítják be ezt az értéket.

Example

Ez a példa egy vonalas interpolációs kifejezéssel hoz létre sima színátmenetet a hőtérkép megjelenítéséhez.

var layer = new atlas.layer.HeatMapLayer(datasource, null, {
    color: [
        'interpolate',
        ['linear'],
        ['heatmap-density'],
        0, 'transparent',
        0.01, 'purple',
        0.5, '#fb00fb',
        1, '#00c3ff'
    ]
});

Amellett, hogy sima színátmenetet használ a hőtérkép színezéséhez, a színek egy tartományon belül is megadhatóak egy step kifejezés használatával. step A hőtérkép színezésére szolgáló kifejezés vizuálisan olyan tartományokra bontja a sűrűséget, amelyek egy körvonal- vagy radarstílus-térképhez hasonlítanak.

var layer = new atlas.layer.HeatMapLayer(datasource, null, {
    color: [
        'step',
        ['heatmap-density'],
        'transparent',
        0.01, 'navy',
        0.25, 'navy',
        0.5, 'green',
        0.75, 'yellow',
        1, 'red'
    ]
});

További információkért tekintse meg a Hőtérkép-réteg hozzáadása című dokumentációt.

Vonalállapot-kifejezés

A vonalállapot-kifejezés lekéri a folyamatot egy vonalréteg átmenetes vonala mentén, és a következőképpen van definiálva ['line-progress']: . Ez az érték 0 és 1 közötti szám. Egy vagy step több interpolation kifejezéssel együtt használják. Ez a kifejezés csak a vonalréteg strokeGradient beállításával használható.

Megjegyzés:

A strokeGradient sorréteg beállításához meg kell adni az lineMetrics adatforrás beállítását true.

Example

Ez a példa a ['line-progress'] kifejezéssel színátmenetet alkalmaz egy vonal körvonalára.

var layer = new atlas.layer.LineLayer(datasource, null, {
    strokeGradient: [
        'interpolate',
        ['linear'],
        ['line-progress'],
        0, "blue",
        0.1, "royalblue",
        0.3, "cyan",
        0.5, "lime",
        0.7, "yellow",
        1, "red"
    ]
});

Egy interaktív munka példáért lásd : Körvonalátmenet hozzáadása egy vonalhoz.

Szövegmező formátumkifejezése

A szövegmező formátumkifejezése textField a szimbólumréteg textOptions tulajdonság beállításával használható vegyes szövegformázás biztosításához. Ez a kifejezés lehetővé teszi beviteli sztringek és formázási beállítások megadását. Ebben a kifejezésben az egyes bemeneti sztringekhez a következő beállítások adhatók meg.

  • 'font-scale' – Megadja a betűméret méretezési tényezőit. Ha meg van adva, ez az érték felülírja az sizetextOptions egyes sztringek tulajdonságát.
  • 'text-font' – Egy vagy több betűtípuscsaládot határoz meg, amelyeket ehhez a sztringhez kell használni. Ha meg van adva, ez az érték felülírja az fonttextOptions egyes sztringek tulajdonságát.

Az alábbi pszeudokód határozza meg a szövegmező formátumkifejezésének szerkezetét.

[
    'format', 
    input1: string, 
    options1: { 
        'font-scale': number, 
        'text-font': string[]
    },
    input2: string, 
    options2: { 
        'font-scale': number, 
        'text-font': string[]
    },
    …
]

Example

Az alábbi példa félkövér betűtípus hozzáadásával és a funkció tulajdonságának betűméretének felskálázásával formázja a title szövegmezőt. Ez a példa a subTitle funkció tulajdonságát is hozzáadja egy új vonalhoz, leskálázott betűmérettel.

var layer = new atlas.layer.SymbolLayer(datasource, null, {
    textOptions: {
        textField: [
            'format',

            //Bold the title property and scale its font size up.
            ['get', 'title'],
            {
                'text-font': ['literal', ['StandardFont-Bold']],
                'font-scale': 1.25
            },

            '\n', {},   //Add a new line without any formatting.

            //Scale the font size down of the subTitle property. 
            ['get', 'subTitle'],
            { 
                'font-scale': 0.75
            }
        ]
    }
});

Ez a réteg az alábbi képen látható módon jeleníti meg a pont funkciót:

Image of Point feature with formatted text field

Számformátum kifejezése

A number-format kifejezés csak szimbólumréteg beállításával textField használható. Ez a kifejezés formázott sztringgé alakítja a megadott számot. Ez a kifejezés körbefuttatja a JavaScript Number.toLocalString függvényét, és támogatja a következő beállításokat.

  • locale – Adja meg ezt a beállítást, ha a számokat sztringekké alakítja úgy, hogy az megfeleljen a megadott nyelvnek. Adjon át egy BCP 47 nyelvi címkét ebbe a beállításba.
  • currency – A szám pénznemet képviselő sztringgé alakítása. A lehetséges értékek az ISO 4217 pénznemkódok, például az USA-dollár "USD", az euró "EUR" vagy a kínai RMB "CNY" kódjai.
  • 'min-fraction-digits' – Megadja a szám sztringverziójában felvenni kívánt tizedesjegyek minimális számát.
  • 'max-fraction-digits' – Megadja a szám sztringverziójában felvehető tizedesjegyek maximális számát.

Az alábbi pszeudokód határozza meg a szövegmező formátumkifejezésének szerkezetét.

[
    'number-format', 
    input: number, 
    options: {
        locale: string, 
        currency: string, 
        'min-fraction-digits': number, 
        'max-fraction-digits': number
    }
]

Example

Az alábbi példa egy number-format kifejezéssel módosítja a revenue pont funkció tulajdonságának megjelenítését egy olyan szimbólumréteg beállításában textField , amely amerikai dollár értékűnek tűnik.

var layer = new atlas.layer.SymbolLayer(datasource, null, {
    textOptions: {
        textField: [
            'number-format', 
            ['get', 'revenue'], 
            { 'currency': 'USD' }
        ],

        offset: [0, 0.75]
    }
});

Ez a réteg az alábbi képen látható módon jeleníti meg a pont funkciót:

Number format expression example

Képkifejezés

Egy képkifejezés használható a szimbólumréteg és textField a imagefillPattern sokszögréteg beállításával. Ez a kifejezés ellenőrzi, hogy a kért kép létezik-e a stílusban, és a feloldott kép nevét adja vissza, vagy nullattól függően, hogy a kép jelenleg a stílusban van-e. Ez az ellenőrzési folyamat szinkron, és megköveteli, hogy a rendszerkép hozzá legyen adva a stílushoz, mielőtt a képargumentumban kérnénk.

Example

Az alábbi példa egy image kifejezéssel egy ikont ad hozzá beágyazott szöveggel egy szimbólumrétegben.

 //Load the custom image icon into the map resources.
map.imageSprite.add('wifi-icon', 'wifi.png').then(function () {

    //Create a data source and add it to the map.
    datasource = new atlas.source.DataSource();
    map.sources.add(datasource);
    
    //Create a point feature and add it to the data source.
    datasource.add(new atlas.data.Point(map.getCamera().center));
    
    //Add a layer for rendering point data as symbols.
    map.layers.add(new atlas.layer.SymbolLayer(datasource, null, {
        iconOptions: {
            image: 'none'
        },
        textOptions: {
            //Create a formatted text string that has an icon in it.
            textField: ["format", 'Ricky\'s ', ["image", "wifi-icon"], ' Palace']
        }
    }));
});

Ez a réteg a szimbólumrétegben lévő szövegmezőt jeleníti meg az alábbi képen látható módon:

Image expression example

Nagyítási kifejezés

Egy zoom kifejezéssel lekérhető a térkép aktuális nagyítási szintje rendereléskor, és a következőképpen van definiálva ['zoom']: . Ez a kifejezés a térkép minimális és maximális nagyítási szinttartománya közötti számot adja vissza. Az Azure Térképek webes és Androidos interaktív térképvezérlők 25 nagyítási szintet támogatnak, 0 és 24 között. A kifejezés használatával a zoom stílusok dinamikusan módosíthatók a térkép nagyítási szintjének módosításakor. A zoom kifejezés csak kifejezésekkel és step kifejezésekkel interpolate használható.

Example

Alapértelmezés szerint a hőtérkép-rétegben renderelt adatpontok sugara rögzített képpont sugarú az összes nagyítási szinthez. A térkép nagyítása során az adatok összeaggadnak, és a hőtérkép rétege másként néz ki. Egy zoom kifejezéssel skálázható a sugár minden nagyítási szinthez, így minden adatpont a térkép ugyanazon fizikai területét fedi le. A hőtérkép rétege statikusabb és konzisztensebb. A térkép minden nagyítási szintje kétszer annyi képponttal rendelkezik függőlegesen és vízszintesen, mint az előző nagyítási szint. A sugár skálázása, hogy az minden nagyítási szinttel duplázódjon, létrehoz egy hőtérképet, amely minden nagyítási szinten konzisztensnek tűnik. A kifejezéssel zoom egy kifejezéssel base 2 exponential interpolation is elvégezhető, a képpont sugara a minimális nagyítási szinthez van beállítva, és egy skálázott sugár a maximális nagyítási szinthez 2 * Math.pow(2, minZoom - maxZoom) az alábbi példában bemutatott módon.

var layer = new atlas.layer.HeatMapLayer(datasource, null, {
    radius: [
        'interpolate',
        ['exponential', 2],
        ['zoom'],
        
        //For zoom level 1 set the radius to 2 pixels.
        1, 2,

        //Between zoom level 1 and 19, exponentially scale the radius from 2 pixels to 2 * Math.pow(2, 19 - 1) pixels (524,288 pixels).
        19, 2 * Math.pow(2, 19 - 1)
    ]
};

Interaktív munka példáért lásd : Konzisztens nagyítható hőtérkép.

Változó kötési kifejezések

A változókötési kifejezések egy változóban tárolják a számítás eredményeit. Így a számítási eredmények többször is hivatkozhatók egy kifejezés más részein. Hasznos optimalizálás olyan kifejezésekhez, amelyek sok számítást igényelnek.

Expression Visszatérési típus Leírás
[
    'let',
    name1: sztring,
    érték1: bármely,
    name2: sztring,
    érték2: bármely,
    ...
    childExpression
]
Egy vagy több értéket tárol változóként az var eredményt visszaadó gyermekkifejezésben használt kifejezéshez.
['var', name: string] bármelyik A kifejezés használatával létrehozott változóra hivatkozik let .

Example

Ez a példa egy olyan kifejezést használ, amely kiszámítja a hőmérsékleti arányhoz viszonyított bevételt, majd egy case kifejezéssel kiértékeli az érték különböző logikai műveleteit. A let kifejezés a hőmérsékleti arányhoz viszonyított bevétel tárolására szolgál, így csak egyszer kell kiszámítani. A var kifejezés szükség szerint hivatkozik erre a változóra anélkül, hogy újra kellene számolnia.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        //Divide the point features `revenue` property by the `temperature` property and store it in a variable called `ratio`.
        'let', 'ratio', ['/', ['get', 'revenue'], ['get', 'temperature']],
        //Evaluate the child expression in which the stored variable is used.
        [
            'case',

            //Check to see if the ratio is less than 100, return 'red'.
            ['<', ['var', 'ratio'], 100],
            'red',

            //Check to see if the ratio is less than 200, return 'green'.
            ['<', ['var', 'ratio'], 200],
            'green',

            //Return `blue` for values greater or equal to 200.
            'blue'
        ]
    ]
});

Következő lépések

További kifejezéseket megvalósító kódmintákért tekintse meg az alábbi cikkeket:

További információ a kifejezéseket támogató rétegbeállításokról: