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