این صفحه به شما نشان میدهد که چگونه یک مجموعه داده را به نقشه اضافه کنید و یک ظاهر طراحی کنید.
پیش نیازها
قبل از ادامه، باید یک شناسه نقشه و سبک نقشه و یک شناسه مجموعه داده داشته باشید.
شناسه مجموعه داده را با سبک نقشه مرتبط کنید
برای استایل دادن به ویژگیهای یک مجموعه داده، یک تابع سبک را در لایه ویژگی مجموعه داده یک نقشه اعمال میکنید. لایه ویژگی مجموعه داده زمانی ایجاد می شود که یک مجموعه داده را با یک سبک نقشه مرتبط کنید .
برای مرتبط کردن مجموعه داده خود با سبک نقشه:
- در Google Cloud Console، به صفحه Datasets بروید .
- روی نام مجموعه داده کلیک کنید. صفحه جزئیات Dataset ظاهر می شود.
- روی تب Preview کلیک کنید.
- در بخش سبکهای نقشه مرتبط ، روی ADD MAP STYLE کلیک کنید.
- روی کادر(های) انتخاب سبک(های) نقشه برای مرتبط کردن کلیک کنید و سپس روی ذخیره کلیک کنید.
اعمال سبک ها به مجموعه داده
برای اعمال سبک ها به یک مجموعه داده:
یک تابع style factory ایجاد کنید که رابط
FeatureLayer.StyleFactory
را پیاده سازی کند. این تابع منطق استایل یک مجموعه داده را تعریف می کند.برای اعمال تابع 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 یک سبک پر کردن و استروک سفارشی را برای چند ضلعی اعمال می کند:
اگر قبلاً این کار را انجام نداده اید، برای ایجاد شناسه نقشه و سبک نقشه جدید، مراحل را در Get Started دنبال کنید. حتما لایه ویژگی Datasets را فعال کنید.
هنگامی که نقشه اولیه می شود، به لایه ویژگی 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(); }یک تابع 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(2) .build(); } return null; };
// Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }
یک ظاهر طراحی شده را از یک لایه حذف کنید
برای حذف استایل از یک لایه، FeatureLayer.setFeatureStyle(null)
را فراخوانی کنید.
همچنین میتوانید از کارخانه استایل خود null
برگردانید، برای مثال اگر میخواهید زیرمجموعهای از ویژگیها نامرئی باقی بماند.