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