توضّح لك هذه الصفحة كيفية إضافة مجموعة بيانات إلى خريطة وتطبيق أسلوب عليها.
المتطلبات الأساسية
قبل المتابعة، يجب أن يكون لديك رقم تعريف الخريطة وتصميم الخريطة ورقم تعريف مجموعة البيانات.
ربط رقم تعريف مجموعة بيانات بنمط خريطة
لتصميم ميزات مجموعة بيانات، عليك تطبيق دالة تصميم على طبقة ميزات مجموعة البيانات في خريطة. يتم إنشاء طبقة عناصر مجموعة البيانات عند ربط مجموعة بيانات بأسلوب خريطة.
لربط مجموعة البيانات بنمط الخريطة:
- في 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
من مصنع الأنماط، على سبيل المثال إذا
أردت إبقاء مجموعة فرعية من الميزات غير مرئية.