افزودن مجموعه داده به نقشه و سبک‌دهی به مجموعه داده

پلاتفرم را انتخاب کنید: Android iOS JavaScript

این صفحه به شما نشان می‌دهد که چگونه یک مجموعه داده را به نقشه اضافه کنید و سبک‌بندی را اعمال کنید.

نماگرفتی که داده‌های چندضلعی سبک‌دار را نشان می‌دهد.

پیش‌نیازها

قبل‌از ادامه، باید شناسه نقشه و سبک نقشه، و شناسه مجموعه داده داشته باشید.

مرتبط کردن شناسه مجموعه داده با سبک نقشه

برای سبک‌بندی عارضه‌های مجموعه داده، تابع سبک را روی لایه عارضه مجموعه داده نقشه اعمال می‌کنید. لایه عارضه مجموعه داده زمانی ایجاد می‌شود که مجموعه داده‌ای را با سبک نقشه مرتبط کنید.

برای مرتبط کردن مجموعه داده با سبک نقشه:

  1. در کنسول Google Cloud، به صفحه مجموعه‌های داده بروید.
  2. روی نام مجموعه داده کلیک کنید. صفحه جزئیات مجموعه داده ظاهر می‌شود.
  3. روی برگه پیش‌نمایش کلیک کنید.
  4. در بخش سبک‌های نقشه مرتبط، روی افزودن سبک نقشه کلیک کنید.
    بخش سبک‌های نقشه مرتبط با دکمه به‌علاوه که در سمت چپ آن عبارت «افزودن سبک نقشه» نوشته شده است.
  5. روی چارگوش انتخاب «سبک(های) نقشه» برای مرتبط کردن کلیک کنید و سپس روی ذخیره کلیک کنید.

اعمال سبک‌ها بر مجموعه داده

برای اعمال سبک‌ها به مجموعه داده:

  1. تابع کارخانه سبکی ایجاد کنید که میانای FeatureLayer.StyleFactory را پیاده‌سازی کند. این تابع منطق سبک‌بندی را برای مجموعه‌داده تعریف می‌کند.

  2. FeatureLayer.setFeatureStyle() را فراخوانی کنید تا تابع کارخانه سبک را برای هر ویژگی در مجموعه داده اعمال کنید.

ساختن تابع کارخانه سبک

تابع کارخانه سبک بر هر عارضه در لایه مجموعه داده در زمانی که تابع را روی لایه عارضه تنظیم می‌کنید اعمال می‌شود. این تابع باید یک شیء FeatureStyle برگرداند که نحوه سبک‌دهی به چندضلعی را مشخص می‌کند.

اگر کارخانه سبک null را برگرداند، ویژگی داده‌شده ارائه نمی‌شود. برای اطلاعات بیشتر، به برداشتن سبک از لایه مراجعه کنید.

کیت توسعه نرم‌افزار Google Maps برای Android یک نمونه Feature را به تابع کارخانه سبک ارسال می‌کند. نمونه Feature نشان‌دهنده فراداده ویژگی است و به شما امکان می‌دهد در تابع کارخانه سبک به فراداده دسترسی داشته باشید.

تابع کارخانه سبک باید همیشه نتایج ثابتی را هنگام اعمال شدن برگرداند. برای مثال، اگر می‌خواهید مجموعه‌ای از عارضه‌ها را به‌طور تصادفی رنگ‌آمیزی کنید، بخش تصادفی نباید در تابع سبک عارضه انجام شود، زیرا این کار باعث نتایج ناخواسته می‌شود.

چون این تابع روی همه عارضه‌های یک لایه اجرا می‌شود، بهینه‌سازی مهم است. برای جلوگیری از تأثیر بر زمان پرداز زدن، وقتی لایه عارضه دیگر استفاده نمی‌شود، FeatureLayer.setFeatureStyle(null) را فراخوانی کنید.

همچنین می‌توانید FeatureLayer.getDatasetId() را فراخوانی کنید تا شناسه مجموعه داده را دریافت کنید.

تنظیم کردن قلم، رنگ‌آمیزی، و شعاع نقطه

هنگام سبک‌بندی عارضه در تابع کارخانه سبک، می‌توانید موارد زیر را تنظیم کنید:

  • رنگ و ماتی حاشیه که توسط کلاس Color تعریف شده است. مقدار پیش‌فرض شفاف است (Color.TRANSPARENT).

  • عرض قلم‌ضربه‌ای حاشیه در پیکسل‌های صفحه‌نمایش. مقدار پیش‌فرض ۲ است.

  • رنگ پرکننده و ماتی همان‌طور که توسط کلاس Color تعریف شده است. مقدار پیش‌فرض شفاف است (Color.TRANSPARENT).

  • شعاع نقطه از ویژگی نقطه بین ۰ تا ۱۲۸ پیکسل.

استفاده از قوانین سبک ساده

ساده‌ترین راه برای سبک‌بندی عارضه‌ها تعریف کردن 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 -> { ... } }

جاوا

// 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; }

اعمال کردن سبک به لایه عارضه مجموعه داده

این مثال تابع کارخانه سبک را بر چندضلعی در لایه عارضه مجموعه داده اعمال می‌کند. تابع کارخانه سبک، سبک پر کردن و خط سفارشی را روی چندضلعی اعمال می‌کند:

  1. اگر قبلاً این کار را نکرده‌اید، مراحل شروع به کار را برای ایجاد شناسه نقشه و سبک نقشه جدید دنبال کنید. حتماً لایه عارضه مجموعه داده‌ها را فعال کنید.

  2. هنگام مقداردهی اولیه نقشه، مرجعی برای لایه عارضه «مجموعه‌داده‌ها» دریافت کنید.

    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() }

    جاوا

    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(); }

  3. تابع کارخانه سبک ایجاد کنید و آن را روی لایه عارضه «مجموعه داده‌ها» اعمال کنید.

    مثال زیر همان رنگ‌آمیزی و قلم‌زدن را برای همه عارضه‌ها در مجموعه داده اعمال می‌کند.

    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) }

    جاوا

    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 را از کارخانه سبک خود برگردانید، برای مثال اگر می‌خواهید زیرمجموعه‌ای از ویژگی‌ها نامرئی باقی بماند.