لتطبيق أنماط على الخطوط والملء لمضلّعات الحدود في طبقة معالم، اتّبِع الخطوات التالية:
أنشئ دالة مصنع أنماط تنفّذ واجهة
FeatureLayer.StyleFactory
. تحدّد هذه الدالة منطق التنسيق لطبقة معالم.استدعِ
FeatureLayer.setFeatureStyle()
لتطبيق دالة إنشاء الأنماط على طبقة المعالم.
توضّح خريطة المثال التالية كيفية تمييز المضلّع الحدودي لمنطقة واحدة في طبقة معالم "المنطقة المحلية".
إنشاء دالة مصنع أنماط
يتم تطبيق دالة إنشاء النمط على كل مضلّع في طبقة المعالم المتأثرة عند ضبط الدالة على طبقة المعالم. يجب أن تعرض هذه الدالة كائن FeatureStyle
يحدّد طريقة تصميم المضلّع.
تمرِّر حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لتطبيقات Android مثيلاً من
Feature
إلى دالة إنشاء الأنماط. يمثّل عنصر Feature
البيانات الوصفية الخاصة بالميزة، ما يتيح لك الوصول إلى البيانات الوصفية في دالة مصنع الأنماط.
يجب أن تعرض دالة إنشاء الأنماط دائمًا نتائج متسقة عند تطبيقها. على سبيل المثال، إذا أردت تلوين مجموعة من العناصر بشكل عشوائي، يجب ألا يتم الجزء العشوائي في دالة نمط العنصر، لأنّ ذلك سيؤدي إلى نتائج غير مقصودة.
بما أنّ هذه الدالة يتم تشغيلها على كل عنصر في الطبقة، فإنّ التحسين مهم. لتجنُّب التأثير في أوقات العرض:
فعِّل طبقات الميزات التي تحتاج إليها فقط.
استدعِ
FeatureLayer.setFeatureStyle(null)
عندما لا تكون طبقة المعالم قيد الاستخدام.
ضبط حدود المضلّع وتعبئته
عند تصميم مضلّع حدودي في دالة إنشاء الأنماط، يمكنك ضبط ما يلي:
لون الخط ودرجة تعتيمه لحدود المضلّع بتنسيق لون ARGB، كما هو محدّد بواسطة فئة
Color
. القيمة التلقائية هي قيمة شفافة (0x00000000).عرض خط حدود المضلّع بوحدات البكسل على الشاشة القيمة التلقائية هي 2.
لون التعبئة ودرجة التعتيم للمضلّع بتنسيق لون ARGB، كما هو محدّد بواسطة الفئة
Color
. القيمة التلقائية هي قيمة شفافة (0x00000000).
البحث عن أرقام تعريف الأماكن لاستهداف الميزات
تطبّق العديد من التطبيقات أنماطًا على عنصر استنادًا إلى موقعه الجغرافي. على سبيل المثال، قد تريد تطبيق نمط على بلدان أو مناطق أو أقاليم مختلفة. يتم تمثيل الموقع الجغرافي للميزة من خلال معرّف مكان.
تحدِّد أرقام تعريف الأماكن مكانًا بشكلٍ فريد في قاعدة بيانات أماكن Google وعلى "خرائط Google". للحصول على معرّف مكان، اتّبِع الخطوات التالية:
- استخدام واجهات برمجة التطبيقات Places وGeocoding للبحث عن مناطق حسب الاسم والحصول على أرقام تعريف الأماكن للمناطق ضمن حدود محدّدة
- الحصول على بيانات من أحداث النقر تعرض هذه الطريقة الميزة المقابلة لمنطقة تم النقر عليها، ما يتيح الوصول إلى معرّف المكان وفئة نوع الميزة.
يختلف مدى التغطية حسب المنطقة. لمزيد من التفاصيل، يمكنك الاطّلاع على تغطية حدود 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
. إذا كان معرّف المكان يخصّ مدينة هانا في هاواي، ستطبّق الدالة نمطًا مخصّصًا للتعبئة والحدود على المضلّع:
إذا لم يسبق لك إجراء ذلك، اتّبِع الخطوات الواردة في البدء لإنشاء رقم تعريف خريطة ونمط خريطة جديدَين. تأكَّد من تفعيل طبقة المعالم المحلية.
احصل على مرجع لطبقة ميزات "الموقع الجغرافي" عند تهيئة الخريطة.
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() }أنشئ دالة مصنع نمط وطبِّقها على طبقة الميزات 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)
.