مجموعه داده را به یک مجموعه داده نقشه و سبک اضافه کنید

پلتفرم مورد نظر را انتخاب کنید: اندروید، iOS، جاوا اسکریپت

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

تصویری که داده‌های چندضلعی استایل‌دهی شده را نشان می‌دهد.

پیش‌نیازها

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

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

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

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

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

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

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

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

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

یک تابع کارخانه‌ای استایل ایجاد کنید

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

اگر style factory null برگرداند، ویژگی داده شده رندر نمی‌شود. برای اطلاعات بیشتر، به حذف استایل از یک لایه مراجعه کنید.

کیت توسعه نرم‌افزار Maps برای اندروید، یک نمونه از Feature به تابع style factory ارسال می‌کند. نمونه Feature ، فراداده‌های feature را نشان می‌دهد و به شما امکان دسترسی به فراداده‌های موجود در تابع style factory را می‌دهد.

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

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

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

تنظیم خط دور، پر کردن و شعاع نقطه

هنگام استایل‌دهی به یک ویژگی در تابع style factory، می‌توانید موارد زیر را تنظیم کنید:

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

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

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

  • شعاع نقطه‌ای یک عارضه نقطه‌ای بین ۰ تا ۱۲۸ پیکسل.

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

ساده‌ترین راه برای استایل‌دهی به ویژگی‌ها، تعریف یک FeatureLayer.StyleFactory است که همیشه یک شیء FeatureStyle یکسان، صرف نظر از ویژگی، می‌سازد. گزینه‌های استایل ویژگی را مستقیماً روی یک لایه ویژگی مجموعه داده اعمال کنید، یا از آنها همراه با یک FeatureStyleFunction استفاده کنید.

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

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

برای مثال، از متد DatasetFeature.getDatasetAttributes() برای برگرداندن Map<String,String> از ویژگی‌های مجموعه داده برای یک عارضه استفاده کنید. سپس می‌توانید استایل‌بندی عارضه را بر اساس ویژگی‌های آن سفارشی کنید.

این مثال مقدار ویژگی "highlightColor" هر ویژگی از یک مجموعه داده را برای کنترل استایل‌بندی تعیین می‌کند:

کاتلین

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

اعمال سبک به لایه ویژگی مجموعه داده

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

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

  2. هنگام مقداردهی اولیه نقشه، به لایه ویژگی Datasets ارجاع داده شود.

    کاتلین

    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. یک تابع کارخانه‌ای استایل ایجاد کنید و آن را به لایه ویژگی مجموعه داده‌ها اعمال کنید.

    مثال زیر، پر کردن و خط دور یکسانی را برای همه ویژگی‌های مجموعه داده اعمال می‌کند.

    کاتلین

    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) را فراخوانی کنید.

همچنین می‌توانید از style factory خود null برگردانید، برای مثال اگر می‌خواهید زیرمجموعه‌ای از ویژگی‌ها نامرئی باقی بمانند.