برای اعمال سبک ها برای استروک و پر کردن چند ضلعی های مرزی در یک لایه ویژگی:
یک تابع style factory ایجاد کنید که رابط
FeatureLayer.StyleFactory
را پیاده سازی کند. این تابع منطق استایل یک لایه ویژگی را تعریف می کند.برای اعمال تابع style factory در لایه ویژگی،
FeatureLayer.setFeatureStyle()
را فراخوانی کنید.
نقشه مثال زیر نشان می دهد که چند ضلعی مرزی برای یک منطقه منفرد در یک لایه ویژگی Locality مشخص شده است.
یک عملکرد کارخانه سبک ایجاد کنید
در زمانی که تابع را روی لایه ویژگی تنظیم میکنید، تابع style factory به هر چند ضلعی در لایه ویژگی تحت تأثیر اعمال میشود. این تابع باید یک شی FeatureStyle
را برگرداند که نحوه استایل دادن به چند ضلعی را مشخص می کند.
Maps SDK برای Android یک نمونه Feature
به تابع style factory ارسال می کند. نمونه Feature
نشان دهنده ابرداده ویژگی است و به شما امکان دسترسی به ابرداده در تابع style factory را می دهد.
تابع style factory همیشه هنگام اعمال باید نتایج ثابتی را نشان دهد. به عنوان مثال، اگر میخواهید مجموعهای از ویژگیها را بهطور تصادفی رنگ کنید، بخش تصادفی نباید در تابع سبک ویژگی قرار بگیرد، زیرا باعث نتایج ناخواسته میشود.
از آنجا که این تابع بر روی هر ویژگی در یک لایه اجرا می شود، بهینه سازی مهم است. برای جلوگیری از تأثیرگذاری بر زمان رندر:
فقط لایه های ویژگی مورد نیاز خود را فعال کنید.
هنگامی که یک لایه ویژگی دیگر استفاده نمی شود،
FeatureLayer.setFeatureStyle(null)
را فراخوانی کنید.
تنظیم چند ضلعی استروک و پر کنید
هنگام استایل دادن به یک چندضلعی مرزی در تابع style factory، می توانید موارد زیر را تنظیم کنید:
رنگ سکته مغزی و کدورت حاشیه چند ضلعی در قالب رنگ ARGB، همانطور که توسط کلاس
Color
تعریف شده است. مقدار پیش فرض شفاف است (0x00000000).عرض خط مرزی چند ضلعی در پیکسل های صفحه نمایش. مقدار پیش فرض 2 است.
رنگ و کدورت چند ضلعی را در قالب رنگ ARGB، همانطور که توسط کلاس
Color
تعریف شده است، پر کنید. مقدار پیش فرض شفاف است (0x00000000).
شناسه های مکان را برای هدف قرار دادن ویژگی ها جستجو کنید
بسیاری از برنامهها بر اساس مکان ویژگی، سبکهایی را برای یک ویژگی اعمال میکنند. به عنوان مثال، ممکن است بخواهید یک استایل را برای کشورها، مناطق یا مناطق مختلف اعمال کنید. مکان ویژگی با شناسه مکان نشان داده می شود.
شناسههای مکان به طور منحصربهفردی یک مکان را در پایگاه داده Google Places و در Google Maps شناسایی میکنند. برای دریافت شناسه مکان:
- از Places API و Geocoding برای جستجوی مناطق بر اساس نام و دریافت شناسه مکان برای مناطق در محدوده های مشخص شده استفاده کنید .
- دادهها را از رویدادهای کلیک دریافت کنید . این ویژگی مربوط به منطقه ای که کلیک شده است را برمی گرداند، که دسترسی به شناسه مکان و دسته نوع ویژگی آن را فراهم می کند.
پوشش بسته به منطقه متفاوت است. برای جزئیات به پوشش مرزهای Google مراجعه کنید.
نامهای جغرافیایی از منابع بسیاری مانند هیئت USGS در نامهای جغرافیایی و فایلهای روزنامه USGS در دسترس هستند.
از PlaceFeature برای دریافت شناسه مکان استفاده کنید
کلاس PlaceFeature
یک زیر کلاس از کلاس Feature
است. این یک ویژگی مکان (ویژگی با شناسه مکان) را نشان میدهد که شامل ویژگیهایی از نوع ADMINISTRATIVE_AREA_LEVEL_1
، ADMINISTRATIVE_AREA_LEVEL_2
، COUNTRY
، LOCALITY
، POSTAL_CODE
، و SCHOOL_DISTRICT
است.
وقتی شناسه مکان در دسترس است، Maps SDK برای Android نمونهای از PlaceFeature
به تابع style factory ارسال میکند تا بتوانید مکان این ویژگی را تعیین کنید.
نمونه کارخانه سبک
این مثال یک تابع style factory را برای چند ضلعی در لایه ویژگی Locality اعمال می کند. تابع style factory شناسه مکان ویژگی را با استفاده از نمونه PlaceFeature
تعیین می کند. اگر شناسه مکان برای Hana، Hawaii باشد، این تابع یک سبک پر کردن و ضربهای سفارشی را به چند ضلعی اعمال میکند:
اگر قبلاً این کار را انجام نداده اید، برای ایجاد شناسه نقشه و سبک نقشه جدید، مراحل را در Get Started دنبال کنید. حتما لایه ویژگی Locality را فعال کنید.
هنگامی که نقشه مقداردهی اولیه می شود، یک مرجع به لایه ویژگی Locality دریافت کنید.
جاوا
private FeatureLayer localityLayer;
@Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
// Apply style factory function to LOCALITY layer. styleLocalityLayer(); }کاتلین
private var localityLayer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
// Apply style factory function to LOCALITY layer. styleLocalityLayer() }یک تابع style factory ایجاد کنید و آن را در لایه ویژگی Locality اعمال کنید.
مثال زیر فقط در صورتی این تابع را اعمال می کند که شناسه مکان ویژگی برای Hana، هاوایی باشد ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). اگر شناسه مکان مشخص شده برای Hana، Hawaii نباشد، این سبک اعمال نمی شود.
جاوا
private void styleLocalityLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
// Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }کاتلین
private fun styleLocalityLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
// Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }
یک ظاهر طراحی شده را از یک لایه حذف کنید
برای حذف استایل از یک لایه، FeatureLayer.setFeatureStyle(null)
را فراخوانی کنید.
برای اعمال سبک ها برای استروک و پر کردن چند ضلعی های مرزی در یک لایه ویژگی:
یک تابع style factory ایجاد کنید که رابط
FeatureLayer.StyleFactory
را پیاده سازی کند. این تابع منطق استایل یک لایه ویژگی را تعریف می کند.برای اعمال تابع style factory در لایه ویژگی،
FeatureLayer.setFeatureStyle()
را فراخوانی کنید.
نقشه مثال زیر نشان می دهد که چند ضلعی مرزی برای یک منطقه منفرد در یک لایه ویژگی Locality مشخص شده است.
یک عملکرد کارخانه سبک ایجاد کنید
در زمانی که تابع را روی لایه ویژگی تنظیم میکنید، تابع style factory به هر چند ضلعی در لایه ویژگی تحت تأثیر اعمال میشود. این تابع باید یک شی FeatureStyle
را برگرداند که نحوه استایل دادن به چند ضلعی را مشخص می کند.
Maps SDK برای Android یک نمونه Feature
به تابع style factory ارسال می کند. نمونه Feature
نشان دهنده ابرداده ویژگی است و به شما امکان دسترسی به ابرداده در تابع style factory را می دهد.
تابع style factory همیشه هنگام اعمال باید نتایج ثابتی را نشان دهد. به عنوان مثال، اگر میخواهید مجموعهای از ویژگیها را بهطور تصادفی رنگ کنید، بخش تصادفی نباید در تابع سبک ویژگی قرار بگیرد، زیرا باعث نتایج ناخواسته میشود.
از آنجا که این تابع بر روی هر ویژگی در یک لایه اجرا می شود، بهینه سازی مهم است. برای جلوگیری از تأثیرگذاری بر زمان رندر:
فقط لایه های ویژگی مورد نیاز خود را فعال کنید.
هنگامی که یک لایه ویژگی دیگر استفاده نمی شود،
FeatureLayer.setFeatureStyle(null)
را فراخوانی کنید.
تنظیم چند ضلعی استروک و پر کنید
هنگام استایل دادن به یک چندضلعی مرزی در تابع style factory، می توانید موارد زیر را تنظیم کنید:
رنگ سکته مغزی و کدورت حاشیه چند ضلعی در قالب رنگ ARGB، همانطور که توسط کلاس
Color
تعریف شده است. مقدار پیش فرض شفاف است (0x00000000).عرض خط مرزی چند ضلعی در پیکسل های صفحه نمایش. مقدار پیش فرض 2 است.
رنگ و کدورت چند ضلعی را در قالب رنگ ARGB، همانطور که توسط کلاس
Color
تعریف شده است، پر کنید. مقدار پیش فرض شفاف است (0x00000000).
شناسه های مکان را برای هدف قرار دادن ویژگی ها جستجو کنید
بسیاری از برنامهها بر اساس مکان ویژگی، سبکهایی را برای یک ویژگی اعمال میکنند. به عنوان مثال، ممکن است بخواهید یک استایل را برای کشورها، مناطق یا مناطق مختلف اعمال کنید. مکان ویژگی با شناسه مکان نشان داده می شود.
شناسههای مکان به طور منحصربهفردی یک مکان را در پایگاه داده Google Places و در Google Maps شناسایی میکنند. برای دریافت شناسه مکان:
- از Places API و Geocoding برای جستجوی مناطق بر اساس نام و دریافت شناسه مکان برای مناطق در محدوده های مشخص شده استفاده کنید .
- دادهها را از رویدادهای کلیک دریافت کنید . این ویژگی مربوط به منطقه ای که کلیک شده است را برمی گرداند، که دسترسی به شناسه مکان و دسته نوع ویژگی آن را فراهم می کند.
پوشش بسته به منطقه متفاوت است. برای جزئیات به پوشش مرزهای Google مراجعه کنید.
نامهای جغرافیایی از منابع بسیاری مانند هیئت USGS در نامهای جغرافیایی و فایلهای روزنامه USGS در دسترس هستند.
از PlaceFeature برای دریافت شناسه مکان استفاده کنید
کلاس PlaceFeature
یک زیر کلاس از کلاس Feature
است. این یک ویژگی مکان (ویژگی با شناسه مکان) را نشان میدهد که شامل ویژگیهایی از نوع ADMINISTRATIVE_AREA_LEVEL_1
، ADMINISTRATIVE_AREA_LEVEL_2
، COUNTRY
، LOCALITY
، POSTAL_CODE
، و SCHOOL_DISTRICT
است.
وقتی شناسه مکان در دسترس است، Maps SDK برای Android نمونهای از PlaceFeature
به تابع style factory ارسال میکند تا بتوانید مکان این ویژگی را تعیین کنید.
نمونه کارخانه سبک
این مثال یک تابع style factory را برای چند ضلعی در لایه ویژگی Locality اعمال می کند. تابع style factory شناسه مکان ویژگی را با استفاده از نمونه PlaceFeature
تعیین می کند. اگر شناسه مکان برای Hana، Hawaii باشد، این تابع یک سبک پر کردن و ضربهای سفارشی را به چند ضلعی اعمال میکند:
اگر قبلاً این کار را انجام نداده اید، برای ایجاد شناسه نقشه و سبک نقشه جدید، مراحل را در Get Started دنبال کنید. حتما لایه ویژگی Locality را فعال کنید.
هنگامی که نقشه مقداردهی اولیه می شود، یک مرجع به لایه ویژگی Locality دریافت کنید.
جاوا
private FeatureLayer localityLayer;
@Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
// Apply style factory function to LOCALITY layer. styleLocalityLayer(); }کاتلین
private var localityLayer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
// Apply style factory function to LOCALITY layer. styleLocalityLayer() }یک تابع style factory ایجاد کنید و آن را در لایه ویژگی Locality اعمال کنید.
مثال زیر فقط در صورتی این تابع را اعمال می کند که شناسه مکان ویژگی برای Hana، هاوایی باشد ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). اگر شناسه مکان مشخص شده برای Hana، Hawaii نباشد، این سبک اعمال نمی شود.
جاوا
private void styleLocalityLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
// Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }کاتلین
private fun styleLocalityLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
// Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }
یک ظاهر طراحی شده را از یک لایه حذف کنید
برای حذف استایل از یک لایه، FeatureLayer.setFeatureStyle(null)
را فراخوانی کنید.