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

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

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

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

پیش نیازها

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

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

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

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

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

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

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

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

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

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

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

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

Maps SDK برای Android یک نمونه Feature را به تابع style factory ارسال می کند. نمونه Feature نشان دهنده ابرداده ویژگی است و به شما امکان دسترسی به ابرداده در تابع style factory را می دهد.

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

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

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

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

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

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

  • عرض سکته مغزی حاشیه در پیکسل های صفحه نمایش. مقدار پیش فرض 2 است.

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

  • شعاع نقطه یک نقطه بین 0 تا 128 پیکسل است.

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

ساده ترین راه برای استایل دادن به ویژگی ها، تعریف یک 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. اگر قبلاً این کار را انجام نداده اید، برای ایجاد شناسه نقشه و سبک نقشه جدید، مراحل را در Get Started دنبال کنید. حتما لایه ویژگی Datasets را فعال کنید.

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

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

    کاتلین

    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(2F) .build(); } return null; };
    // Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }

یک ظاهر طراحی شده را از یک لایه حذف کنید

برای حذف استایل از یک لایه، FeatureLayer.setFeatureStyle(null) را فراخوانی کنید.

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