پنهان کردن عارضه‌های نقشه با سبک‌پردازی

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

علاوه‌بر تغییر سبک عارضه‌ها در نقشه، می‌توانید آن‌ها را کاملاً پنهان کنید. این مثال به شما نشان می‌دهد که چگونه نقاط جالب کسب‌وکار (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 شامل نمونه‌هایی است که استفاده از سبک‌بندی را نشان می‌دهد.