علاوهبر تغییر سبک عارضهها در نقشه، میتوانید آنها را کاملاً پنهان کنید. این مثال به شما نشان میدهد که چگونه نقاط جالب کسبوکار (POI) و نمادهای حملونقل عمومی را در نقشه خود پنهان کنید.
سبکبندی فقط روی نوع نقشه kGMSTypeNormal کار میکند.
درحال اعمال سبکها روی نقشه شما
برای اعمال سبکهای نقشه سفارشی به نقشه، GMSMapStyle(...) را فراخوانی کنید تا
نمونه GMSMapStyle ایجاد شود، نشانی وب فایل JSON محلی یا رشته JSON
حاوی تعاریف سبک را ارسال کنید. نمونه GMSMapStyle را به
خصوصیت mapStyle نقشه اختصاص دهید.
استفاده از فایل JSON
مثالهای زیر فراخوانی GMSMapStyle(...) و ارسال نشانی وب برای فایل محلی را نشان میدهد:
نمونه کد زیر فرض میکند پروژه شما حاوی فایلی با نام
style.json است:
Swift
import GoogleMaps class MapStyling: UIViewController { // Set the status bar style to complement night-mode. override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } override func loadView() { let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 14.0) let options = GMSMapViewOptions() options.camera = camera let mapView = GMSMapView(options: options) do { // Set the map style by passing the URL of the local file. if let styleURL = Bundle.main.url(forResource: "style", withExtension: "json") { mapView.mapStyle = try GMSMapStyle(contentsOfFileURL: styleURL) } else { NSLog("Unable to find style.json") } } catch { NSLog("One or more of the map styles failed to load. \(error)") } self.view = mapView } }
آبجکتیو-سی
#import "MapStyling.h" @import GoogleMaps; @interface MapStyling () @end @implementation MapStyling // Set the status bar style to complement night-mode. - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } - (void)loadView { GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86 longitude:151.20 zoom:12]; GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = camera; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; mapView.myLocationEnabled = YES; NSBundle *mainBundle = [NSBundle mainBundle]; NSURL *styleUrl = [mainBundle URLForResource:@"style" withExtension:@"json"]; NSError *error; // Set the map style by passing the URL for style.json. GMSMapStyle *style = [GMSMapStyle styleWithContentsOfFileURL:styleUrl error:&error]; if (!style) { NSLog(@"The style definition could not be loaded: %@", error); } mapView.mapStyle = style; self.view = mapView; } @end
برای تعریف گزینههای سبک، فایل جدیدی با نام style.json به پروژهتان اضافه کنید،
و برای پنهان کردن نقاط جالب (POI) کسبوکار و نمادهای حملونقل عمومی،
اعلامیه سبک JSON زیر را جایگذاری کنید:
استفاده از منبع رشتهای
مثالهای زیر فراخوانی GMSMapStyle() و ارسال منبع رشته را نشان میدهد:
Swift
class MapStylingStringResource: UIViewController { let MapStyle = "JSON_STYLE_GOES_HERE" // Set the status bar style to complement night-mode. override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } override func loadView() { let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 14.0) let options = GMSMapViewOptions() options.camera = camera let mapView = GMSMapView(options: options) do { // Set the map style by passing a valid JSON string. mapView.mapStyle = try GMSMapStyle(jsonString: MapStyle) } catch { NSLog("One or more of the map styles failed to load. \(error)") } self.view = mapView } }
آبجکتیو-سی
@implementation MapStylingStringResource // Paste the JSON string to use. static NSString *const kMapStyle = @"JSON_STYLE_GOES_HERE"; // Set the status bar style to complement night-mode. - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } - (void)loadView { GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86 longitude:151.20 zoom:12]; GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = camera; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; mapView.myLocationEnabled = YES; NSError *error; // Set the map style by passing a valid JSON string. GMSMapStyle *style = [GMSMapStyle styleWithJSONString:kMapStyle error:&error]; if (!style) { NSLog(@"The style definition could not be loaded: %@", error); } mapView.mapStyle = style; self.view = mapView; } @end
اعلام سبک زیر نقاط جالب کسبوکار (POI) و
نمادهای حملونقل عمومی را پنهان میکند. رشته سبک زیر را بهعنوان مقدار
متغیر kMapStyle جایگذاری کنید:
اعلامیههای سبک JSON
نقشههای قابلطراحی از دو مفهوم برای اعمال رنگها و سایر تغییرات سبک در نقشه استفاده میکنند:
- انتخابگرها مؤلفههای جغرافیایی را که میتوانید در نقشه سبکبندی کنید مشخص میکنند. این عناصر شامل جادهها، پارکها، پهنههای آبی، و
غیره، و همچنین برچسبهای آنها میشود. انتخابکنندهها شامل ویژگیها
و عناصر هستند که بهعنوان ویژگیهای
featureTypeوelementTypeمشخص شدهاند. - سبکدهندهها ویژگیهای رنگ و نمایانی هستند که میتوانید به عناصر نقشه اعمال کنید. آنها رنگ نمایشدادهشده را ازطریق ترکیبی از مقادیر فام، رنگ، و روشنایی/گاما تعریف میکنند.
برای شرح مفصل گزینههای سبکبندی JSON، به مرجع سبک مراجعه کنید.
دستیار سبکبندی پلاتفرم Maps
از جادوگر سبکبندی پلاتفرم Maps بهعنوان روشی سریع برای تولید شیء سبکبندی JSON استفاده کنید. کیت توسعه نرمافزار Maps برای iOS از همان اعلامیههای سبک Maps JavaScript API پشتیبانی میکند.
نمونههای کد کامل
مخزن ApiDemos در GitHub شامل نمونههایی است که استفاده از سبکبندی را نشان میدهد.





