إخفاء ميزات الخريطة باستخدام التصميم

اختَر النظام الأساسي: Android iOS JavaScript

بالإضافة إلى تغيير نمط العناصر على الخريطة، يمكنك أيضًا إخفائها بالكامل. يوضح لك هذا المثال كيفية إخفاء نقاط الاهتمام (POI) والنقل العام على الخريطة.

لا يعمل التصميم إلا على نوع الخريطة "kGMSTypeNormal".

جارٍ تطبيق الأنماط على خريطتك

لتطبيق أنماط خرائط مخصّصة على خريطة، يمكنك استدعاء GMSMapStyle(...) لإنشاء مثيل GMSMapStyle، أو تمرير عنوان URL لملف JSON محلي، أو سلسلة JSON تحتوي على تعريفات الأنماط. يمكنك تخصيص مثيل GMSMapStyle للسمة mapStyle على الخريطة.

استخدام ملف JSON

توضح الأمثلة التالية استدعاء GMSMapStyle(...) وتمرير عنوان URL لملف محلي:

يفترض نموذج الرمز التالي أن مشروعك يحتوي على ملف باسم 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 mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

    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
  }
}
      

Objective-C

#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];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  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، والصق تعريف نمط 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 mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

    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
  }
}
      

Objective-C

@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];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  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
      

يخفي إعلان النمط التالي نقاط الاهتمام وأيقونات النقل العام. ألصِق سلسلة النمط التالية كقيمة لمتغير kMapStyle:

نماذج تعريف نمط JSON

تستخدم الخرائط ذات الأنماط مفهومين لتطبيق الألوان وتغييرات الأنماط الأخرى على خريطة:

  • تُحدِّد أدوات الاختيار المكوّنات الجغرافية التي يمكنك نمطها على الخريطة. وتشمل هذه الطرق والمنتزهات والمسطحات المائية وغير ذلك، بالإضافة إلى تسمياتها. تشتمل أدوات الاختيار على ميزات وعناصر، يتم تحديدها كسمتَين featureType وelementType.
  • الأنماط هي خصائص اللون والرؤية التي يمكنك تطبيقها على عناصر الخريطة. وهي تحدد اللون المعروض من خلال مزيج من قيم تدرج اللون واللون والإضاءة/غاما.

راجِع مرجع النمط للحصول على وصف مفصّل لخيارات تصميم JSON.

معالج تصميم منصة "خرائط Google"

استخدِم معالج تصميم النظام الأساسي للخرائط كطريقة سريعة لإنشاء كائن نمط JSON. تدعم حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لنظام التشغيل iOS إعلانات النمط نفسها مثل Maps JavaScript API.

عيّنات التعليمات البرمجية بالكامل

يتضمن مستودع ApiDemos على GitHub نماذج توضح استخدام النمط.