تعبيرات الأنماط المستندة إلى البيانات (Web SDK)

تمكنك التعبيرات من تطبيق منطق العمل على خيارات التصميم التي تراقب الخصائص المُحددة في كل شكل في مصدر بيانات. يمكن للتعبيرات تصفية البيانات فـي مصدر بيانات أو طبقة. قد تتكون التعبيرات من منطق شرطي، مثل عبارات if. يمكن استخدامها لمُعالجة البيانات باستخدام: عوامل تشغيل السلسلة وعوامل التشغيل المنطقية وعوامل التشغيل الرياضية.

تقلل الأنماط المُستندة إلى البيانات من كمية التعليمات البرمجية اللازمة لتنفيذ منطق العمل حول التصميم. عند استخدامها مـع الطبقات، يتم تقييم التعبيرات في وقت العرض على مؤشر ترابط منفصل. توفر هذه الوظيفة أداءً متزايدًا مقارنة بتقييم منطق العمل على مؤشر ترابط واجهة المُستخدم.

يوفر هذا الفيديو نظرة عامة على التصميم المستند إلـى البيانات في خرائط Azure Web SDK.


يتم تمثيل التعبيرات كصفائف JSON. العنصر الأول من تعبير فـي الصفيف هو سلسلة تحدد اسم عامل تشغيل التعبير. على سبيل المثال، «+» أو «case». العناصر التالية (إن وجدت) هي وسيطات التعبير. كل وسيطة هي إما قيمة حرفية (سلسلة أو رقم أو قيمة منطقية أو )، أو nullصفيف تعبير آخر. يحدد الرمز الزائف التالي البنية الأساس للتعبير.

[ 
    expression_operator, 
    argument0, 
    argument1, 
    …
] 

يدعم خرائط Azure Web SDK العديد من أنواع التعبيرات. يمكن استخدام التعبيرات بمفردها أو بالاشتراك مـع تعبيرات أخرى.

نـوع التعبيرات ‏‏الوصف
التعبير التجميعي تعبير يعرف عملية حسابية تتم معالجتها عبر مجموعة من البيانات ويُمكن استخدامها مع clusterProperties خيار DataSource.
التعبيرات المنطقية توفر التعبيرات المنطقية مجموعة مـن تعبيرات عوامل التشغيل المنطقية لتقييم المقارنات المنطقية.
تعبيرات الألوان تسهل تعبيرات الألوان إنشاء قيم الألوان ومعالجتها.
التعبيرات الشرطية توفر التعبيرات الشرطية عمليات منطقية تشبه عبارات-لو.
تعبيرات البيانات يوفر الوصول إلى بيانات الخاصية فـي ميزة.
استيفاء قيم وتعبيرات الخطوة يمكن استخدام تعبيرات الاستنتاج والخطوة لحساب القيم على طول المنحنى أو دالة الخطوة المُستوفية القيم.
تعبيرات خاصة بالطبقة التعبيرات الخاصة التي لا تنطبق إلا على طبقة واحدة.
التعبيرات الرياضية توفر عوامل تشغيل رياضية لإجراء عمليات حسابية تستند إلـى البيانات داخل إطار عمل التعبير.
تعبيرات عامل تشغيل السلسلة تقوم تعبيرات عامل تشغيل السلسلة بإجراء عمليات تحويل علـى سلاسل مثل تسلسل الحالة وتحويلها.
تعبيرات النوع توفر تعبيرات النوع أدوات لاختبار وتحويل أنواع بيانات مُختلفة مثل السلاسل والأرقام والقيم المنطقية.
تعبيرات ربط المُتغيرات تخزن تعبيرات ربط المتغير نتائج عملية حسابية في متغير ويتم الرجوع إليها في مكان آخر فـي تعبير عدة مرات دون الحاجة إلى إعادة حساب القيمة المخزنة.
تعبير التكبير استرداد مستوى التكبير/التصغير الحالي للخريطة فـي وقت العرض.

تستخدم جميع الأمثلة في هذا المستند الميزة التالية لتوضيح الطرق المختلفة التي يُمكن من خلالها استخدام الأنواع المختلفة من التعبيرات.

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

تعبيرات البيانات

توفر تعبيرات البيانات الوصول إلى بيانات الخاصية في ميزة.

Expression نوع الإرجاع ‏‏الوصف
['at', number, array] قيمة استرداد عنصر من صفيف.
['geometry-type'] سلسلة تحصل على نـوع هندسة الميزة: Point وMultiPoint وLineString وMultiLineString وPolygon وMultiPolygon.
['get', string] قيمة تحصل على قيمة الخاصية مـن خصائص الميزة الحالية. ترجع قيمة فارغة إذا كانت الخاصية المَطلوبة مفقودة.
['get', string, object] قيمة تحصل على قيمة الخاصية من خصائص العنصر المتوفر. ترجع قيمة فارغة إذا كانت الخاصية المَطلوبة مفقودة.
['has', string] boolean تحديد إذا كانت خصائص الميزة لها خاصية محددة.
['has', string, object] boolean تحديد إذا كانت خصائص العنصر تحتوي على الخاصية المحددة.
['id'] قيمة تحصل على مُعرف الميزة إذا كان لديه واحد.
['in', boolean | string | number, array] boolean تحديد إذا كان هناك عنصر موجود فـي صفيف
['in', substring, string] boolean تحديد إذا كانت السلسلة الفرعية موجودة في سلسلة
['index-of', boolean | string | number, array | string]

['index-of', boolean | string | number, array | string, number]
رقم إرجاع الموضع الأول الذي يمكن العثور فيه على عنصر في صفيف أو سلسلة فرعية يمكن العثور عليها في سلسلة، أو -1 إذا تعذر العثور على الإدخال. يقبل فهرسًا اختياريًا من مكان بدء البحث.
['length', string | array] رقم الحصول علـى طول سلسلة أو صفيف.
['slice', array | string, number]

['slice', array | string, number, number]
السلسلة | الصفيف يرجع عنصر من صفيف أو سلسلة فرعية من سلسلة مـن فهرس بدء محدد، أو بين فهرس بدء وفهرس نهاية إذا تم تعيينه. القيمة المرجعة شاملة لمؤشر البدء، لكن ليس فهرس النهاية.

أمثلة

يمكن الوصول إلى خصائص الميزة مباشرة فـي تعبير باستخدام تعبير get. يستخدم zoneColor هـذا المثال قيمة الميزة لتحديد خاصية اللون لطبقة فقاعة.

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

يعمل المثال أعلاه بشكل جيد، إذا كانت جميع ميزات النقطة تحتوي على الخاصية zoneColor . إذا لم يكن الأمر كذلك، فسيتم تعيين اللون افتراضيا إلى "أسود". لتعديل اللون الاحتياطي، استخدم تعبير case مع has التعبير للتحقق مما إذا كانت الخاصية موجودة. إذا لم تكن الخاصية موجودة، فسترجع لونًا احتياطيًا.

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.
    ]
});

تعرض طبقات الفقاعة والرموز إحداثيات جميع الأشكال في مصدر بيانات، بشكل افتراضي. يمكن أن يبرز هذا السلوك رؤوس المضلع أو الخط. يمكن استخدام الخيار filter الخاص بالطبقة للحد من نوع الشكل الهندسي للمعالم التي تعرضها، وذلك باستخدام تعبير ['geometry-type'] ضمن تعبير منطقي. يحد المثال التالي من طبقة فقاعة حتى يتم عرض الميزات فحسب Point.

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

يسمح المثال التالي بعرض كل من الميزات Point وMultiPoint.

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

وبالمثل، يتم عرض المخطط التفصيلي للمضلعات في طبقات الخط. لتعطيل هذا السلوك في طبقة خط، أضف عامل تصفية يسمح بالميزات LineString و MultiLineString فحسب.

فيما يلي بعض الأمثلة الأخرى حول كيفية استخدام تعبيرات البيانات:

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

التعبيرات الرياضية

توفر التعبيرات الرياضية عوامل تشغيل رياضية لإجراء عمليات حسابية تستند إلـى البيانات داخل إطار عمل التعبير.

Expression نوع الإرجاع ‏‏الوصف
['+', number, number, …] رقم يحسب مجموع الأرقام المُحددة.
['-', number] رقم يطرح 0 من الرقم المُحدد.
['-', number, number] رقم يطرح الأرقام الأولى من الرقم الثاني.
['*', number, number, …] رقم ضرب الأرقام المحددة معًا.
['/', number, number] رقم يقسم الرقم الأول على الرقم الثاني.
['%', number, number] رقم يحسب الباقي مـن قسمة الرقم الأول على الرقم الثاني.
['^', number, number] رقم يحسب قيمة القيمة الأولى التي تـم رفعها إلى قوة الرقم الثاني.
['abs', number] رقم يحسب القيمة المطلقة للرقم المُحدد.
['acos', number] رقم يحسب قوس جيب تمام للرقم المحدد.
['asin', number] رقم يحسب قوس الجيب للرقم المحدد.
['atan', number] رقم يحسب قوس ظل الزاوية للرقم المحدد.
['ceil', number] رقم يقرب الرقم إلى العدد الصحيح الكامل التالي.
['cos', number] رقم يحسب جيب التمام للرقم المحدد.
['distance', Point \| MultiPoint \| LineString \| MultiLineString \| Polygon \| MultiPolygon \| Feature \| FeatureCollection] رقم حساب أقصر مسافة بالعدادات بين الميزة التي تم تقييمها وهندسة الإدخال. قد تختلف قيم المسافة التي تم إرجاعها في الدقة بسبب فقدان الدقة من هندسة الترميز، خاصة أقل من مستوى التكبير/التصغير 13.
['e'] رقم يرجع القيمة الثابتة الرياضية e.
['floor', number] رقم يقرب الرقم لأقل إلى العدد الصحيح الكامل السابق.
['ln', number] رقم يحسب اللوغاريتم الطبيعي للرقم المُحدد.
['ln2'] رقم يرجع القيمة الثابتة الرياضية ln(2).
['log10', number] رقم يحسب لوغاريتم الأساس العاشر للرقم المُحدد.
['log2', number] رقم يحسب لوغاريتم الأساس الثاني للرقم المحدد.
['max', number, number, …] رقم يحسب الحد الأقصى للرقم فـي مجموعة الأرقام المحددة.
['min', number, number, …] رقم يحسب الحد الأدنى للرقم فـي مجموعة الأرقام المحددة.
['pi'] رقم يرجع القيمة الثابتة الرياضية PI.
['round', number] رقم يقرب الرقم إلـى أقرب عدد صحيح. يتم تقريب قيم النصف بعيدًا عن الصفر. على سبيل المثال، يتم تقييم ['round', -1.5] إلى -2.
['sin', number] رقم يحسب جيب الزاوية للرقم المُحدد.
['sqrt', number] رقم يحسب الجذر التربيعي للرقم المحدد.
['tan', number] رقم يحسب مماس الرقم المحدد.

التعبير التجميعي

يحدد التعبير التجميعي عملية حسابية تتم معالجتها عبر مجموعة من البيانات ويُمكن استخدامها مع clusterProperties خيار DataSource. يجب أن يكون إخراج هذه التعبيرات رقمًا أو قيمة منطقية.

يأخذ التعبير التجميعي ثلاث قيم: قيمة عامل التشغيل والقيمة الأولية وتعبير لاسترداد خاصية مـن كل ميزة في بيانات لتطبيق العملية التجميعية عليها. يحتوي هذا التعبير علـى التنسيق التالي:

[operator: string, initialValue: boolean | number, mapExpression: Expression]
  • عامل التشغيل: دالة تعبير يتم تطبيقها بعد ذلك على مقابل كافة القيم المحسوبة mapExpression بواسطة لكل نقطة فـي نظام المجموعة. عوامل التشغيل المدعومة:
    • بالنسبة إلى الأرقام: +، *، max، min
    • بالنسبة إلى القيم المَنطقية: all، any
  • القيمة الأولية: قيمة أولية يتم فيها تجميع القيمة المَحسوبة الأولى مقابلها.
  • mapExpression: تعبير يتم تطبيقه على كل نقطة فـي مجموعة البيانات.

أمثلة

إذا كانت جميع الميزات فـي مجموعة البيانات تحتوي على revenue خاصية، وهي رقم. بعد ذلك، يمكن حساب إجمالي إيرادات جميع النقاط في نظام المجموعة، والتي يتم إنشاؤها من مجموعة البيانات. يتم هـذا الحساب باستخدام التعبير التجميعي التالي: ['+', 0, ['get', 'revenue']]

التعبير المُتراكم

accumulated يحصل التعبير على قيمة خاصية نظام المجموعة المتراكمة حتى الآن، المستخدمة في clusterProperties خيار مصدر متفاوت DataSource المسافات.

الاستخدام

["accumulated"]

التعبيرات المنطقية

توفر التعبيرات المنطقية مجموعة مـن تعبيرات عوامل التشغيل المنطقية لتقييم المقارنات المنطقية.

تتم كتابة المقارنة بدقة عند مقارنة القيم. تعتبر القيم من أنواع مختلفة دائمًا غير متساوية. تعتبر الحالات التي تعرف فيها الأنواع بأنها مختلفة في وقت التحليل غير صالحة وتنتج خطأ تحليل.

Expression نوع الإرجاع ‏‏الوصف
['!', boolean] boolean النفي المنطقي. يعيد true إذا كان الإدخال هو false، وfalse إذا كان الإدخال هو true.
['!=', value, value] boolean إرجاع true إذا لم تكن قيم الإدخال متساوية، false وإلا.
['<', value, value] boolean يرجع true إذا كان الإدخال الأول أقل تمامًا من الثاني، false بخلاف ذلك. الوسيطات مَطلوبة لتكون إما سلاسل أو كلا الرقمين.
['<=', value, value] boolean يرجع true إذا كان الإدخال الأول أقل من أو يساوي الثاني، false بخلاف ذلك. الوسيطات مَطلوبة لتكون إما سلاسل أو كلا الرقمين.
['==', value, value] boolean يرجع true إذا كانت قيم الإدخال متساوية، false بخلاف ذلك. الوسيطات مَطلوبة لتكون إما سلاسل أو كلا الرقمين.
['>', value, value] boolean يرجع true إذا كان الإدخال الأول أكبر تمامًا من الثاني، false بخلاف ذلك. الوسيطات مَطلوبة لتكون إما سلاسل أو كلا الرقمين.
['>=' value, value] boolean يرجع true إذا كان الإدخال الأول أكبر مـن أو يساوي الثاني، false بخلاف ذلك. الوسيطات مَطلوبة لتكون إما سلاسل أو كلا الرقمين.
['all', boolean, boolean, …] boolean يرجع true إذا كانت جميع الإدخالات true، false بخلاف ذلك.
['any', boolean, boolean, …] boolean يرجع true إذا كان أي من الإدخالات true، false بخلاف ذلك.
['within', Polygon | MultiPolygon | Feature<Polygon | MultiPolygon>] boolean يرجع true إذا كانت الميزة التي تـم تقييمها مضمنة بالكامل داخل حدود هندسة الإدخال، خطأ خلاف ذلك. يمكن أن تكون قيمة الإدخال GeoJSON صالحة من النوع Polygonأو MultiPolygonأوFeatureأو FeatureCollection. الميزات المَدعومة للتقييم:

- النقطة: ترجع false إذا كانت نقطة على الحدود أو تقع خارج الحدود.
- LineString: ترجع false إذا كان أي جزء من الخط يقع خارج الحدود، أو تقاطع الخط مـع الحد، أو كانت نقطة نهاية الخط على الحدود.

التعبيرات الشرطية

توفر التعبيرات الشرطية عمليات منطقية تشبه عبارات-لو.

تنفذ التعبيرات التالية عمليات مَنطق شرطي على بيانات الإدخال. على سبيل المثال، case يـوفر التعبير منطق «if/then/else» بينما match يكون التعبير مثل «switch-statement».

تعبير حالة الأحرف

التعبير case هو نوع من التعبيرات الشرطية التي توفر منطق «if/then/else». يخطو هذا النوع من التعبير من خلال قائمة بالشروط المنطقية. يقوم بإرجاع قيمة الإخراج للشرط المنطقي الأول لتقييمه إلـى صحيح.

يعرف الرمز الزائف التالي بنية التعبيرcase.

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

مثال

يخطو المثال التالي من خلال شروط منطقية مختلفة حتى يعثر على شرط يتم تقييمه إلى true، ثم يرجع تلك القيمة المقترنة. إذا لم يتم تقييم أي شرط منطقي إلى true، يتم إرجاع قيمة احتياطية.

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'
    ]
});

مُطابقة التعبير

التعبير match هو نوع من التعبير الشرطي الذي يوفر عبارة التبديل مثل المنطق. يمكن أن يكون الإدخال أي تعبير مثل ['get', 'entityType'] الذي يرجع سلسلة أو رقم. يجب أن تكون كل تسمية قيمة حرفية واحدة أو صفيفًا من القيم الحرفية، يجب أن تكون قيمها جميع السلاسل أو جميع الأرقام. يتطابق الإدخال إذا تطابقت أي من القيم في الصفيف. يجب أن تكون كل تسمية فريدة. إذا لم يتطابق نوع الإدخال مع نوع التسميات، فإن النتيجة هي القيمة الاحتياطية.

يعرف الرمز الزائف التالي بنية التعبيرmatch.

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

أمثلة

يبحث المثال التالي في entityType خاصية ميزة نقطة في طبقة فقاعية للبحث عن تطابق. إذا عثر على تطابق، يتم إرجاع تلك القيمة المُحددة أو ترجع القيمة الاحتياطية.

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'
    ]
});

يستخدم المثال التالي صفيفًا لسرد مجموعة مـن التسميات التي يجب أن ترجع جميعها نفس القيمة. هذا النهج أكثر كفاءة بكثير مـن سرد كل تسمية على حدة. في هذه الحالة، إذا كان entityType العقار "مطعم" أو "grocery_store"، يتم إرجاع اللون "الأحمر".

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 عبر مجموعة من التعبيرات حتى يتم الحصول على أول قيمة غير فارغة وإرجاع تلك القيمة.

يعرف الرمز الزائف التالي بنية التعبيرcoalesce.

[
    'coalesce', 
    value1, 
    value2, 
    …
]

مثال

يستخدم المثال التالي تعبير coalesce لتعيين خيار textField لطبقة رمز. إذا كانت الخاصية title مفقودة من الميزة أو تم تعيينها إلى null، يحاول التعبير البحث عن subTitle الخاصية ، إذا كانت مفقودة أو null، فإنها تعود إلى سلسلة فارغة.

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.
            ''
        ]
    }
});

يستخدم المثال التالي تعبير coalesce لاسترداد أيقونة الصورة المتوفرة الأولى المتوفرة في قالب الخريطة من قائمة بأسماء الصور المحددة.

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'
        ]
    }
});

تعابير النوع

توفر تعبيرات النوع أدوات لاختبار وتحويل أنواع بيانات مُختلفة مثل السلاسل والأرقام والقيم المنطقية.

Expression نوع الإرجاع ‏‏الوصف
['array', value] | ['array', type: "string" | "number" | "boolean", value] Object[] يؤكد أن الإدخال عبارة عـن صفيف.
['boolean', value] | ["boolean", value, fallback: value, fallback: value, ...] boolean يؤكد أن قيمة الإدخال قيمة مَنطقية. إذا تم توفير قيم متعددة، يتم تقييم كل قيم بالترتيب حتى يتم الحصول علـى قيمة منطقية. إذا لم تكن أي مـن الإدخالات منطقية، يكون التعبير خطأ.
['collator', { 'case-sensitive': boolean, 'diacritic-sensitive': boolean, 'locale': string }] أداة المقارنة إرجاع مجمع للاستخدام فـي عمليات المقارنة المعتمدة على إعدادات محلية. الخيارات الحساسة لحالة الأحرف وحساسة التشكيل افتراضيًا إلى خطأ. تحدد الوسيطة المحلية علامة لـغة IETF لللغة المحلية المراد استخدامها. إذا لـم يتم توفير أي منها، يتم استخدام الإعدادات المحلية الافتراضية. إذا لم تتوفر الإعدادات المحلية المطلوبة، يستخدم الكولاتور الإعدادات المحلية الاحتياطية المعرفة من قبل النظام. استخدم الإعدادات المحلية المحسومة لاختبار نتائج السلوك الاحتياطي للغة المحلية.
['literal', array]

['literal', object]
الصفيف | العنصر إرجاع صفيف حرفي أو قيمة عنصر. استخدم هذا التعبير لمنع تقييم صفيف أو كائن كتعبير، وهو ضروري عند إرجاع صفيف أو كائن بواسطة تعبير.
['image', string] سلسلة يتحقق لمعرفة ما إذا كان يتم تحميل معرف صورة مُحدد في صورة مصغرة للخرائط. إذا كـان كذلك، يتم إرجاع المعرف، وإلا يتم إرجاع قيمة خالية.
['number', value] | ["number", value, fallback: value, fallback: value, ...] رقم يؤكد أن قيمة الإدخال هـي رقم. إذا تم توفير قيم متعددة، يتم تقييم كـل واحد بالترتيب حتى يتم الحصول على رقم. إذا لم يكن أي مـن الإدخالات عبارة عن أرقام، يكون التعبير خطأ.
['object', value] | ["object", value, fallback: value, fallback: value, ...] ‏‏الكائن يؤكد أن قيمة الإدخال هي عنصر. إذا تم توفير قيم متعددة، يتم تقييم كل واحد بالترتيب حتى يتم الحصول على عنصر. إذا لم تكن أي من الإدخالات عناصر، يكون التعبير خطأ.
['string', value] | ["string", value, fallback: value, fallback: value, ...] سلسلة يؤكد أن قيمة الإدخال هـي سلسلة. إذا تم توفير قيم متعددة، يتم تقييم كـل واحد بالترتيب حتى يتم الحصول على سلسلة. إذا لم يكن أي مـن الإدخالات عبارة عن سلاسل، يكون التعبير خطأ.
['to-boolean', value] boolean تحويل قيمة الإدخال إلـى قيمة منطقية. تكون النتيجة false عندما يكون الإدخال عبارة عن سلسلة فارغة أو 0أوfalseأوnullأوNaN؛ بخلاف ذلك true.
['to-color', value]

['to-color', value1, value2…]
color يحول قيمة الإدخال إلى لـون. إذا تم توفير قيم متعددة، يتم تقييم كـل واحد بالترتيب حتى يتم الحصول على التحويل الناجح الأول. إذا لم يمكن تحويل أي مـن الإدخالات، يكون التعبير خطأ.
['to-number', value]

['to-number', value1, value2, …]
رقم تحويل قيمة الإدخال إلـى رقم، إن أمكن. إذا كان الإدخال null أو false، تكون النتيجة 0. إذا كان الإدخال هو true، فإن النتيجة هـي 1. إذا كان الإدخال عبارة عن سلسلة، يتم تحويله إلـى رقم باستخدام دالة سلسلة ToNumber لمواصفات لغة ECMAScript. إذا تم توفير قيم متعددة، يتم تقييم كـل واحد بالترتيب حتى يتم الحصول على التحويل الناجح الأول. إذا لم يمكن تحويل أي مـن الإدخالات، يكون التعبير خطأ.
['to-string', value] سلسلة تحويل قيمة الإدخال إلى سلسلة. إذا كان الإدخال هو null، فإن النتيجة هـي "". إذا كان الإدخال منطقيًا، فإن النتيجة هي "true" أو "false". إذا كان الإدخال رقما، يتم تحويله إلى سلسلة باستخدام الدالة ToString رقم لمواصفات لغة ECMAScript. إذا كان الإدخال لونًا، يتم تحويله إلـى سلسلة "rgba(r,g,b,a)"ألوان CSS RGBA. وإلا، يتم تحويل الإدخال إلـى سلسلة باستخدام الدالة JSON.stringify لمواصفات لغة ECMAScript.
['typeof', value] سلسلة ترجع سلسلة تصف نوع القيمة المُحددة.

تلميح

إذا ظهرت رسالة خطأ مشابهة لـ Expression name must be a string, but found number instead. If you wanted a literal array, use ["literal", [...]]. في وحدة تحكم المستعرض، فهذا يعني أن هناك تعبيرًا في مكان ما في التعليمات البرمجية يحتوي على صفيف لا يحتوي على سلسلة لقيمته الأولى. إذا كنت تريد أن يرجع التعبير صفيفًا، فغلف الصفيف بالتعبير literal. يعين المثال التالي خيار الأيقونة offset لطبقة رمز، والتي يجب أن تكون صفيفا يحتوي على رقمين، باستخدام match تعبير للاختيار بين قيمتي إزاحة استنادًا إلى قيمة entityType خاصية ميزة النقطة.

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]]
        ]
    }
});

تعبيرات الألوان

تسهل تعبيرات الألوان إنشاء قيم الألوان ومعالجتها.

Expression نوع الإرجاع ‏‏الوصف
['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 ينتج نتائج مستمرة وسلسة من خلال الاستنتاج بين أزواج من قيم الإدخال والإخراج ("توقف"). يعمل مثل interpolate، ولكن يجب أن يكون نوع الإخراج لونا، ويتم تنفيذ الاستنتاج في مساحة لون Hue-Chroma-Luminance.
['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 ينتج نتائج مستمرة وسلسة من خلال الاستنتاج بين أزواج من قيم الإدخال والإخراج ("توقف"). يعمل مثل interpolate، ولكن يجب أن يكون نوع الإخراج لونا، ويتم تنفيذ الاستنتاج في مساحة لون CIELAB.
['rgb', number, number, number] color ينشئ قيمة لون من مكونات حمراء وأخضر وأزرق تتراوح بين 0 و255، ومكون ألفا من 1. إذا كان أي مكون خارج النطاق، يَكون التعبير خطأ.
['rgba', number, number, number, number] color ينشئ قيمة لون من مكونات حمراء وأخضر وأزرق تتراوح بين 0 و255، ومكون ألفا ضمن نطاق من 0 و1. إذا كان أي مكون خارج النطاق، يَكون التعبير خطأ.
['to-rgba'] [رقم، رقم، رقم، رقم] إرجاع صفيف مكون من أربعة عناصر يحتوي على مكونات اللون الأحمر، والأخضر، الأزرق، والألفا، بهذا الترتيب.

مثال

ينشئ المثال التالي قيمة لون RGB تحتوي على قيمة حمراء بقيمة 255، وقيم خضراء وأزرق يتم حسابها عن طريق الضرب 2.5 في قيمة الخاصية temperature . مع تغير درجة الحرارة، يتغير اللون إلى ظلال مختلفة باللون الأحمر.

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.
    ]
});

تعبيرات عامل تشغيل السلسلة

تقوم تعبيرات عامل تشغيل السلسلة بإجراء عمليات تحويل علـى سلاسل مثل تسلسل الحالة وتحويلها.

Expression نوع الإرجاع ‏‏الوصف
['concat', string, string, …] سلسلة تربط عدة سلاسل معًا. يجب أن تكون كـل قيمة سلسلة. استخدم تعبير النوع to-string لتحويل أنواع القيم الأخرى إلى سلسلة إذا لزم الأمر.
['downcase', string] سلسلة تحويل السلسلة المحددة إلى أحرف صغيرة.
['is-supported-script', string] | ['is-supported-script', Expression] boolean تحديد إذا كانت سلسلة الإدخال تستخدم مجموعة أحرف معتمدة بواسطة مجموعة الخطوط الحالية. على سبيل المثال: ['is-supported-script', 'ಗೌರವಾರ್ಥವಾಗಿ']
['resolved-locale', string] سلسلة إرجاع علامة لغة IETF للإعدادات المحلية المستخدمة من قبل الكولاتور المتوفر الذي يمكن استخدامه لتحديد الإعدادات المحلية الافتراضية للنظام أو لتحديد ما إذا تم تحميل الإعدادات المحلية المطلوبة بنجاح.
['upcase', string] سلسلة تحويل السلسلة المُحددة إلى أحرف كبيرة.

مثال

يحول temperature المثال التالي خاصية ميزة النقطة إلـى سلسلة ثم يتسلسل «°F» إلى نهايتها.

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'
    }
});

يعرض التعبير أعلاه دبوسا على الخريطة مع النص "64 درجة فهرنهايت" فوقه كما هو موضح في الصورة التالية.

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

استيفاء القيم وتعبيرات الخطوة

يمكن استخدام تعبيرات الاستنتاج والخطوة لحساب القيم على طول المنحنى أو دالة الخطوة المُستوفية القيم. تأخذ هذه التعبيرات تعبيرًا يقوم بإرجاع قيمة رقمية كإدخال لها، على سبيل المثال ['get', 'temperature']. يتم تقييم قيمة الإدخال مقابل أزواج من قيم الإدخال والإخراج، لتحديد القيمة التي تناسب المُنحنى أو وظيفة الخطوة المستوفية القيم. تسمى قيم الإخراج «نقاط». يجب أن تكون قيم الإدخال لكل توقف رقمًا وأن تكون بترتيب تصاعدي. يجب أن تكون قيم الإخراج رقمًا ومصفوفة من الأرقام أو لونًا.

التعبير المُستوفي القيم

يمكن استخدام تعبير interpolate لحساب مجموعة مستمرة ومتجانسة من القيم عن طريق الإقحام بين قيم التوقف. ينتج عن التعبير interpolate الذي يُرجع قيم اللون تدرج لوني يتم تحديد القيم الناتجة منه.

توجد ثلاثة أنواع من أساليب الاستنتاج التي يمكن استخدامها في تعبير interpolate:

  • ['linear'] - استيفاء خطي بين زوج مـن النقاط.
  • ['exponential', base] - استيفاء بشكل أسي بين زوج مـن النقاط. تتحكم القيمة base فـي معدل زيادة الإخراج. تجعل القيم الأعـلى الإخراج يزيد أكثر نحو النهاية العليا للنطاق. تنتج قيمة base القريبة من 1 ناتجًا يزيد بشكل خطي.
  • ['cubic-bezier', x1, y1, x2, y2] - يتم استيفاء باستخدام مكعب منحنيات بيزير مُحدد بواسطة نقاط التحكم المحددة.

فيما يلي مثال على الشكل الذي تبدو عليه هذه الأنواع المختلفة من الاستنتاجات.

Linear المتزايد مكعب Bezier
Linear interpolation graph Exponential interpolation graph Cubic Bezier interpolation graph

يعرف الرمز الزائف التالي بنية التعبيرinterpolate.

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

مثال

يستخدم المثال التالي تعبير linear interpolate لتعيين color خاصية طبقة فقاعة استنادًا إلى خاصية temperature لميزة النقطة. temperature إذا كانت القيمة أقل من 60، يتم إرجاع "أزرق". إذا كان بين 60 وأقل من 70، يتم إرجاع الأصفر. إذا كان بين 70 وأقل من 80، يتم إرجاع "برتقالي". إذا كان 80 أو أكبر، يتم إرجاع "أحمر".

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

توضح الصورة التالية كيفية اختيـار الألوان للتعبير أعلاه.

Interpolate expression example

تَعبير الخطوة

يمكن استخدام تعبيرstep لحساب قيم النتائج المتدرجة المنفصلة عن طريق تقييم دالة ثابتة مجزأة محددة بواسطة الإيقافات.

يعرف الرمز الزائف التالي بنية التعبيرstep.

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

ترجع تعبيرات الخطوة قيمة إخراج الإيقاف قبل قيمة الإدخال، أو قيمة الإدخال الأولى إذا كان الإدخال أقل مـن الإيقاف الأول.

مثال

يستخدم المثال التالي تعبير step لتعيين color خاصية طبقة فقاعة استنادًا إلى خاصية temperature لميزة النقطة. temperature إذا كانت القيمة أقل من 60، يتم إرجاع "أزرق". إذا كان بين 60 وأقل من 70، يتم إرجاع "الأصفر". إذا كان بين 70 وأقل من 80، يتم إرجاع "برتقالي". إذا كان 80 أو أكبر، يتم إرجاع "أحمر".

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

توضح الصورة التالية كيفية اختيـار الألوان للتعبير أعلاه.

Step expression example

تعبيرات خاصة بالطبقة

التعبيرات الخاصة التي تنطبق على طبقات مُعينة فحسب.

تعبير كثافة خـريطة التمثيل اللوني

يسترد تعبير كثافة خريطة التمثيل اللوني قيمة كثافة خريطة التمثيل اللوني لكل بكسل فـي طبقة خريطة التمثيل اللوني ويتم تعريفه على أنه ['heatmap-density']. هذه القيمة هـي رقم بين 0 و1. يتم استخدامه بالاشتراك مـع تعبير interpolation أو step لتحديد تدرج اللون المستخدم لتلوين خريطة التمثيل اللوني. يُمكن استخدام هذا التعبير فحسب في خيار اللون لطبقة خريطة التمثيل اللوني.

تلميح

يحدد اللون فـي الفهرس 0، في تعبير الاستنتاج أو اللون الافتراضي للون الخطوة، لون المنطقة التي لا توجد فيها بيانات. يمكن استخدام اللون فـي الفهرس 0 لتعريف لون الخلفية. يفضل الكثيرون تعيين هـذه القيمة إلى أسود شفاف أو شبه شفاف.

مثال

يستخدم هذا المثال تعبير استنتاج خطي لإنشاء تدرج ألوان سلس لـعرض خريطة التمثيل اللوني.

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

بالإضافة إلى استخدام تدرج متجانس لتلوين خريطة التمثيل اللوني، يمكن تحديد الألوان ضمن مجموعة مـن النطاقات باستخدام step تعبير. يؤدي استخدام تعبيرstep لتلوين خريطة التمثيل اللوني بصريًا إلى تقسيم الكثافة إلى نطاقات تشبه خريطة نمط محيط أو نسيجي.

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'
    ]
});

للمزيد من المعلومات، راجع وثائق إضافة طبقة خريطة التمثيل اللوني.

تعبير تقدم الخط

يسترد تعبير تقدم الخط التقدم على طول خط متدرج فـي طبقة خط ويتم تعريفه على أنه ['line-progress']. هذه القيمة هـي رقم بين 0 و1. يتم استخدامه في تركيبة مَع تعبير interpolation أو step. يُمكن استخدام هذا التعبير فحسب مع خيار strokeGradient لطبقة الخط.

إشعار

يتطلب الخيار strokeGradient لطبقة الخط تعيين الخيار lineMetrics لمصدر البيانات على true.

مثال

يستخدم هذا المثال التعبير ['line-progress'] لتطبيق تدرج لون عـلى ضغطة سطر.

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"
    ]
});

للحصول على مثال عمل تفاعلي، راجع إضافة تدرج ضغطة إلى خط.

تعبير تنسيق حَقل النص

يمكن استخدام تعبير تنسيق حقل النص مـع textField خيار خاصية طبقات textOptions الرموز لتوفير تنسيق نص مختلط. يسمح هذا التعبير بتحديد مجموعة مـن سلاسل الإدخال وخيارات التنسيق. يمكن تحديد الخيارات التالية لكل سلسلة إدخال فـي هذا التعبير.

  • 'font-scale' - يُحدد عامل التحجيم لحجم الخط. إذا تم تحديدها، تتجاوز هذه القيمة size خاصية textOptions للسلسلة الفردية.
  • 'text-font' - يُحدد مجموعة خطوط واحدة أو أكثر يجب استخدامها لهذه السلسلة. إذا تم تحديدها، تتجاوز هذه القيمة font خاصية textOptions للسلسلة الفردية.

يعرف الرمز الزائف التالي بنية تعبير تنسيق حقل النص.

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

مثال

يقوم المثال التالي بتنسيق حقل النص عـن طريق إضافة خط غامق وتوسيع حجم الخط لخاصية title للميزة. يضيف هذا المثال أيضًا خاصية الميزة subTitle على خط جديد، مع حجم خط متدرج.

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
            }
        ]
    }
});

تعرض هذه الطبقة ميزة النقطة كما هو موضح في الصورة التالية:

Image of Point feature with formatted text field

تعبير تنسيق الأرقـام

يمكن استخدام التعبيرnumber-format فحسب مع خيار textField لطبقة الرمز. يحول هذا التعبير الرقم المتوفر إلـى سلسلة منسقة. يغطي هذا التعبير الدالة Number.toLocalString لـ JavaScript ويدعم مجموعة الخيارات التالية.

  • locale - حدد هذا الخيار لتحويل الأرقام إلى سلاسل بطريقة تتماشى مـع اللغة المحددة. قم بتمرير علامة لغة BCP 47 إلـى هذا الخيار.
  • currency - لتحويل الرقم إلـى سلسلة تمثل عملة. القيم المحتملة هي رموز العملات ISO 4217 ، مثل «USD» للدولار الأمريكي أو «EUR» لليورو أو «CNY» للرنمينبي الصيني.
  • 'min-fraction-digits' - يحدد الحد الأدنى لعدد المنازل العشرية المراد تضمينها فـي إصدار سلسلة الرقم.
  • 'max-fraction-digits' - يحدد الحد الأقصى لعدد المنازل العشرية المراد تضمينها فـي إصدار سلسلة الرقم.

يعرف الرمز الزائف التالي بنية تعبير تنسيق حقل النص.

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

مثال

يستخدم المثال التالي تعبير number-format لتعديل كيفية revenue عرض خاصية ميزة النقطة في textField خيار طبقة رمز حتى تظهر القيمة بالدولار الأمريكي.

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

        offset: [0, 0.75]
    }
});

تعرض هذه الطبقة ميزة النقطة كما هو موضح في الصورة التالية:

Number format expression example

تَعبير الصورة

يُمكن استخدام تعبير صورة مع خيارات image و textField لطبقة رمز، وخيار fillPattern طبقة مضلعة. يتحقق هذا التعبير من وجود الصورة المطلوبة في النمط ويرجع إما اسم الصورة التي تم حلها أو null، اعتمادا على ما إذا كانت الصورة موجودة حاليا في النمط أم لا. عملية التحقق من الصحة هذه متزامنة وتتطلب إضافة الصورة إلى النمط قبل طلبها فـي وسيطة الصورة.

مثال

يستخدم المثال التالي تعبيرًا image لإضافة أيقونة مضمنة مع نص فـي طبقة رمز.

 //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']
        }
    }));
});

تعرض هذه الطبقة حقل النص في طبقة الرمز كما هو موضح في الصورة التالية:

Image expression example

تعبير التكبير

يتم استخدام تعبير zoom لاسترداد مستوى التكبير الحالي للخريطة في وقت العرض ويتم تعريفه على أنه ['zoom']. يقوم هذا التعبير بإرجاع رقم بين الحد الأدنى والحد الأقصى لنطاق مستوى التكبير للخريطة. تدعم عناصر تحكم الخريطة التفاعلية خرائط Azure للويب وAndroid مستويات التكبير 25، مرقمة من 0 إلى 24. يسمح استخدام التعبير بتعديل الأنماط zoom ديناميكيًا مع تغيير مستوى التكبير للخريطة. zoom يمكن استخدام التعبير فقط مع interpolate التعبيرات وstep.

مثال

بشكل افتراضي، يحتوي radii لنقاط البيانات المعروضة في طبقة خريطة التمثيل اللوني على نصف قطر بكسل ثابت لجميع مستويات التكبير. عند تكبير الخريطة، تجمع البيانات معًا وتبدو طبقة خريطة التمثيل اللوني مُختلفة. يمكن استخدام تعبير zoom لتوسيع نطاق نصف القطر لكل مستوى تكبير حتى تغطي كل نقطة بيانات نفس المنطقة المادية للخريطة. يجعل طبقة خريطة التمثيل اللوني تبدو أكثر ثباتا واتساقا. يحتوي كل مستوى تكبير في الخريطة على ضعف عدد وحدات البكسل عمودياً وأفقياً مثل مستوى التكبير السابق. يؤدي تحجيم نصف القطر، بحيث يتضاعف مع كل مستوى تكبير/تصغير، إلى إنشاء خريطة حرارية تبدو متسقة على جميع مستويات التكبير/التصغير. يمكن إنجازه باستخدام zoom التعبير مع base 2 exponential interpolation تعبير، مع تعيين نصف قطر البكسل للحد الأدنى من مستوى التكبير/التصغير ونصف القطر المتدرج لمستوى التكبير/التصغير الأقصى المحسوب كما 2 * Math.pow(2, minZoom - maxZoom) هو موضح في المثال التالي.

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)
    ]
};

للحصول على مثال عمل تفاعلي، راجع خريطة التمثيل اللوني المتسقة القابلة للتكبير.

تعبيرات ربط المُتغيرات

تخزن تعبيرات ربط المتغير نتائج عملية حسابية فـي متغير. لذلك، يُمكن الرجوع إلى نتائج الحساب في مكان آخر في تعبير عدة مرات. إنه تحسين مفيد للتعبيرات التي تتضمن العديد من العمليات الحسابية.

Expression نوع الإرجاع ‏‏الوصف
[
    'let'،
    اسم1: string,
    قيمة1: any,
    اسم2: string,
    قيمة2: any,
    ...
    childExpression
]
يخزن قيمة واحدة أو أكثر كمتغيرات لاستخدامها بواسطة التعبير var في التعبير التابع الذي يقوم بإرجاع النتيجة.
['var', name: string] أي يشير إلى متغير تم إنشاؤه باستخدام التعبيرlet.

مثال

يستخدم هذا المثال تعبيرًا يحسب الإيرادات نسبة إلى درجة الحرارة ثم يستخدم تعبير case لتقييم العمليات المنطقية المختلفة على هذه القيمة. يستخدم التعبير let لتخزين الإيرادات نسبة إلى درجة الحرارة، حتى يحتاج إلى حساب مرة واحدة فقط. يشير التعبير var إلى هذا المتغير كلما لزم الأمر دون الحاجة إلى إعادة حسابه.

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'
        ]
    ]
});

الخطوات التالية

راجع المقالات التالية لمزيد مـن نماذج التعليمات البرمجية التي تنفذ التعبيرات:

تعرف علـى المزيد حول خيارات الطبقة التي تدعم التعبيرات: