توضّح لك هذه الصفحة كيفية إضافة مجموعة بيانات إلى خريطة وتطبيق الأنماط.
المتطلبات الأساسية
قبل المتابعة، يجب أن يكون لديك رقم تعريف الخريطة وتصميم الخريطة ورقم تعريف مجموعة البيانات.
ربط رقم تعريف مجموعة بيانات بنمط خريطة
لتحديد نمط ميزات مجموعة البيانات، يمكنك تطبيق دالة نمط على طبقة مجموعة البيانات المميزة للخريطة. يتم إنشاء طبقة عناصر مجموعة البيانات عند ربط مجموعة بيانات بأسلوب خريطة.
لربط مجموعة البيانات بنمط الخريطة:
- في Google Cloud Console، انتقِل إلى صفحة مجموعات البيانات.
- انقر على اسم مجموعة البيانات. ستظهر صفحة تفاصيل مجموعة البيانات.
- انقر على علامة التبويب معاينة.
- في قسم أنماط الخريطة المرتبطة، انقر على
إضافة نمط خريطة.
- ضَع علامة في مربّعات الاختيار لنمطَي الخريطة المطلوب ربطهما، ثم انقر على حفظ.
تطبيق الأنماط على مجموعة البيانات
لتطبيق الأنماط على مجموعة بيانات:
إنشاء دالة مصنع للأنماط لتنفيذ واجهة
FeatureLayer.StyleFactory
. تحدد هذه الدالة منطق التصميم لمجموعة بيانات.استخدِم دالة
FeatureLayer.setFeatureStyle()
لتطبيق دالة "إنشاء نمط" على كل عنصر في مجموعة البيانات.
إنشاء دالة مصنع للأنماط
يتم تطبيق دالة مصنع الأنماط على كلّ سمة في مجموعة البيانات
الطبقة في وقت ضبط الدالة على طبقة السمات. يجب أن تُعرِض هذه الدالة FeatureStyle
كائنًا يحدِّد كيفية وضع تنسيق على المضلّع.
إذا عرض مصنع النمط null
، لن يتم عرض الميزة المحددة. لمزيد من
المعلومات، يُرجى الاطّلاع على إزالة التصميم من طبقة.
تمرِّر حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لنظام التشغيل Android نسخة Feature
إلى وظيفة المصنع. يمثل المثيل Feature
البيانات الوصفية للعنصر، ما يتيح لك الوصول إلى البيانات الوصفية في وظيفة مصنع الأنماط.
ينبغي أن تعرض دائمًا وظيفة مصنع الأنماط نتائج متسقة عند تطبيقها. على سبيل المثال، إذا أردت تلوين مجموعة من العناصر بشكل عشوائي، يجب ألا يقع الجزء العشوائي في دالة نمط العناصر، لأنّ ذلك قد يؤدي إلى نتائج غير مقصودة.
ونظرًا لأن هذه الدالة تعمل على كل ميزة في الطبقة، فإن التحسين مهم. لتجنّب التأثير في أوقات العرض، اتصل بالرقم
FeatureLayer.setFeatureStyle(null)
عندما لا تكون طبقة العناصر قيد الاستخدام.
يمكنك أيضًا الاتصال برقم FeatureLayer.getDatasetId()
للحصول على معرّف مجموعة البيانات.
ضبط سمك الخط والتعبئة ونطاق النقطة
عند تصميم ميزة في وظيفة مصنع الأنماط، يمكنك ضبط:
لون الخط ودرجة التعتيم للحدود كما هو موضّح في الفئة
Color
. القيمة التلقائية هي شفافة (Color.TRANSPARENT
).عرض الخط للحدود بوحدات بكسل الشاشة. والقيمة الافتراضية هي 2.
لون التعبئة وشفافيتها على النحو المحدّد في فئة
Color
القيمة التلقائية هي شفافة (Color.TRANSPARENT
).نصف القطر لعنصر نقطة يتراوح بين 0 و128 بكسل.
استخدام قواعد النمط البسيطة
إنّ أبسط طريقة لتنسيق الميزات هي تحديد FeatureLayer.StyleFactory
يُنشئ دائمًا كائن FeatureStyle
متطابقًا، بغض النظر عن
الميزة. يمكنك تطبيق خيارات نمط الميزة مباشرةً على طبقة ميزات مجموعة بيانات أو استخدامها
مع FeatureStyleFunction
.
استخدام قواعد الأنماط الوصفية
يمكنك ضبط قواعد الأنماط بشكل تعريفي استنادًا إلى سمة عنصر،
وتطبيقها على مجموعة البيانات بأكملها. يمكنك عرض null
من دالة نمط الميزة، على سبيل المثال، إذا كنت تريد أن تظل مجموعة فرعية من الميزات غير مرئية.
على سبيل المثال، يمكنك استخدام طريقة DatasetFeature.getDatasetAttributes()
لعرض Map<String,String>
من سمات مجموعة البيانات لإحدى الميزات. ويمكنك بعد ذلك تخصيص تصميم الميزة بناءً على سماتها.
يحدِّد هذا المثال قيمة سمة highlightColor لكل سمة من سمات مجموعة البيانات للتحكّم في التصميم:
Kotlin
// Get the dataset feature, so we can work with all of its attributes. val datasetFeature: DatasetFeature = feature as DatasetFeature
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. val attributeColor: MutableMap<String, String> = datasetFeature.getDatasetAttributes() when (attributeColor["highlightColor"]) { "Black" -> { ... } "Red" -> { ... } else -> { ... } }
Java
// Get the dataset feature, so we can work with all of its attributes. DatasetFeature datasetFeature = (DatasetFeature) feature;
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. Map<String, String> attributeColor = datasetFeature.getDatasetAttributes(); switch(attributeColor.get("highlightColor")) { case "Black": ... break; case "Red": ... break; default: // Color not defined. ... break; }
تطبيق النمط على طبقة عناصر مجموعة البيانات
يطبّق هذا المثال دالة مصنع الأنماط على مضلّع في مجموعة البيانات طبقة العناصر. تطبِّق دالة "منشأة الأنماط" نمط تعبئة ولون خط مخصّصَين على المضلع:
اتّبِع الخطوات الواردة في البدء لإنشاء رقم تعريف جديد للخريطة ونمط جديد للخريطة، إذا لم يسبق لك إجراء ذلك. تأكَّد من تفعيل طبقة الميزات مجموعات البيانات.
الحصول على مرجع لطبقة ميزة "مجموعات البيانات" عند بدء تشغيل الخريطة
Kotlin
private var datasetLayer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the DATASET feature layer. datasetLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build())
// Apply style factory function to DATASET layer. styleDatasetsLayer() }Java
private FeatureLayer datasetLayer;
@Override public void onMapReady(GoogleMap map) { // Get the DATASET feature layer. datasetLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build());
// Apply style factory function to DATASET layer. styleDatasetsLayer(); }أنشئ دالة لإنشاء الأنماط وطبِّقها على طبقة ميزة "مجموعات البيانات ".
يطبق المثال التالي نفس التعبئة والحد على جميع الميزات في مجموعة البيانات.
Kotlin
private fun styleDatasetsLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) {
return@StyleFactory FeatureStyle.Builder() // Define a style with green fill at 50% opacity and // solid green border. .fillColor(0x8000ff00.toInt()) .strokeColor(0xff00ff00.toInt()) .strokeWidth(2F) .build() } return@StyleFactory null }
// Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }Java
private void styleDatasetsLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
return new FeatureStyle.Builder() // Define a style with green fill at 50% opacity and solid green border. .fillColor(0x8000ff00) .strokeColor(0xff00ff00) .strokeWidth(2) .build(); } return null; };
// Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }
إزالة التصميم من طبقة
لإزالة التنسيق من طبقة، اتصل بالرقم FeatureLayer.setFeatureStyle(null)
.
ويمكنك أيضًا إرجاع null
من مصنع التصميم، على سبيل المثال إذا كنت تريد أن تظل مجموعة فرعية من الميزات غير مرئية.