إضفاء نمط على مضلّع حدودي

اختيار النظام الأساسي: Android iOS JavaScript

لتطبيق أنماط على الخطوط والملء لمضلّعات الحدود في طبقة معالم، اتّبِع الخطوات التالية:

  1. أنشئ دالة مصنع أنماط تنفّذ واجهة FeatureLayer.StyleFactory. تحدّد هذه الدالة منطق التنسيق لطبقة معالم.

  2. استدعِ FeatureLayer.setFeatureStyle() لتطبيق دالة إنشاء الأنماط على طبقة المعالم.

توضّح خريطة المثال التالية كيفية تمييز المضلّع الحدودي لمنطقة واحدة في طبقة معالم "المنطقة المحلية".

لقطة شاشة تعرض مضلّع "هانا" في "هاواي"

إنشاء دالة مصنع أنماط

يتم تطبيق دالة إنشاء النمط على كل مضلّع في طبقة المعالم المتأثرة عند ضبط الدالة على طبقة المعالم. يجب أن تعرض هذه الدالة كائن FeatureStyle يحدّد طريقة تصميم المضلّع.

تمرِّر حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لتطبيقات Android مثيلاً من Feature إلى دالة إنشاء الأنماط. يمثّل عنصر Feature البيانات الوصفية الخاصة بالميزة، ما يتيح لك الوصول إلى البيانات الوصفية في دالة مصنع الأنماط.

يجب أن تعرض دالة إنشاء الأنماط دائمًا نتائج متسقة عند تطبيقها. على سبيل المثال، إذا أردت تلوين مجموعة من العناصر بشكل عشوائي، يجب ألا يتم الجزء العشوائي في دالة نمط العنصر، لأنّ ذلك سيؤدي إلى نتائج غير مقصودة.

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

  • فعِّل طبقات الميزات التي تحتاج إليها فقط.

  • استدعِ FeatureLayer.setFeatureStyle(null) عندما لا تكون طبقة المعالم قيد الاستخدام.

ضبط حدود المضلّع وتعبئته

عند تصميم مضلّع حدودي في دالة إنشاء الأنماط، يمكنك ضبط ما يلي:

  • لون الخط ودرجة تعتيمه لحدود المضلّع بتنسيق لون ARGB، كما هو محدّد بواسطة فئة Color. القيمة التلقائية هي قيمة شفافة (0x00000000).

  • عرض خط حدود المضلّع بوحدات البكسل على الشاشة القيمة التلقائية هي 2.

  • لون التعبئة ودرجة التعتيم للمضلّع بتنسيق لون ARGB، كما هو محدّد بواسطة الفئة Color. القيمة التلقائية هي قيمة شفافة (0x00000000).

البحث عن أرقام تعريف الأماكن لاستهداف الميزات

تطبّق العديد من التطبيقات أنماطًا على عنصر استنادًا إلى موقعه الجغرافي. على سبيل المثال، قد تريد تطبيق نمط على بلدان أو مناطق أو أقاليم مختلفة. يتم تمثيل الموقع الجغرافي للميزة من خلال معرّف مكان.

تحدِّد أرقام تعريف الأماكن مكانًا بشكلٍ فريد في قاعدة بيانات أماكن Google وعلى "خرائط Google". للحصول على معرّف مكان، اتّبِع الخطوات التالية:

يختلف مدى التغطية حسب المنطقة. لمزيد من التفاصيل، يمكنك الاطّلاع على تغطية حدود Google.

تتوفّر الأسماء الجغرافية من مصادر عديدة، مثل مجلس USGS المعني بالأسماء الجغرافية وملفات U.S. Gazetteer.

استخدام PlaceFeature للحصول على معرّف مكان

فئة PlaceFeature هي فئة فرعية من فئة Feature. يمثّل هذا النوع ميزة مكان (ميزة تتضمّن رقم تعريف مكان) تشمل ميزات من النوع ADMINISTRATIVE_AREA_LEVEL_1 وADMINISTRATIVE_AREA_LEVEL_2 وCOUNTRY وLOCALITY وPOSTAL_CODE وSCHOOL_DISTRICT.

عندما يتوفّر معرّف المكان، تمرِّر حزمة تطوير البرامج (SDK) لخرائط Google على Android مثيلاً من PlaceFeature إلى دالة إنشاء الأنماط لتتمكّن من تحديد الموقع الجغرافي للعنصر.

مثال على مصنع الأنماط

يطبّق هذا المثال دالة مصنع أنماط على مضلّع في طبقة ميزات "المنطقة المحلية". تحدّد دالة إنشاء الأنماط رقم تعريف المكان الخاص بالعنصر باستخدام مثيل PlaceFeature. إذا كان معرّف المكان يخصّ مدينة هانا في هاواي، ستطبّق الدالة نمطًا مخصّصًا للتعبئة والحدود على المضلّع:

  1. إذا لم يسبق لك إجراء ذلك، اتّبِع الخطوات الواردة في البدء لإنشاء رقم تعريف خريطة ونمط خريطة جديدَين. تأكَّد من تفعيل طبقة المعالم المحلية.

  2. احصل على مرجع لطبقة ميزات "الموقع الجغرافي" عند تهيئة الخريطة.

    Java

    private FeatureLayer localityLayer;
    @Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
    // Apply style factory function to LOCALITY layer. styleLocalityLayer(); }

    Kotlin

    private var localityLayer: FeatureLayer? = null
    override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
    // Apply style factory function to LOCALITY layer. styleLocalityLayer() }

  3. أنشئ دالة مصنع نمط وطبِّقها على طبقة الميزات Locality.

    لا يطبّق المثال التالي الدالة إلا إذا كان معرّف المكان الخاص بالعنصر الجغرافي هو Hana، هاواي ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). إذا كان رقم تعريف المكان المحدّد لا يخصّ مدينة هانا في هاواي، لن يتم تطبيق النمط.

    Java

    private void styleLocalityLayer() {
    // Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
    // Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
    // Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
    // Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
    // Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }

    Kotlin

    private fun styleLocalityLayer() {
    // Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
    // Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
    // Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
    // Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
    // Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }

إزالة الأنماط من طبقة

لإزالة التنسيق من طبقة، استخدِم الدالة FeatureLayer.setFeatureStyle(null).