إضافة خريطة ذات أنماط

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

هذه الصفحة هي دليل سريع لتصميم خريطتك، باستخدام الوضع الليلي كمثال.

نظرة عامة

باستخدام خيارات الأنماط، يمكنك تخصيص عرض أنماط "خرائط Google" العادية، وتغيير العرض المرئي لميزات مثل الطرق والمتنزهات والأعمال التجارية وغيرها من نقاط الاهتمام. وهذا يعني أنّه يمكنك التأكيد على مكونات معيّنة من الخريطة أو جعل الخريطة تكمل نمط تطبيقك.

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

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

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

باستخدام ملف JSON

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

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.
  • أدوات الأسلوب هي خصائص اللون ومستوى الرؤية التي يمكنك تطبيقها على عناصر الخريطة. وتحدِّد هذه القيم اللون المعروض من خلال مزيج من قيم تدرج اللون واللون والسطوع/معامل غاما.

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

أداة تصميم الخرائط في "منصة خرائط Google"

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

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

يتضمّن مستودع ApiDemos على GitHub عيّنات توضّح استخدام التنسيق.

الخطوة التالية

اطّلِع على كيفية إخفاء العناصر على الخريطة باستخدام التنسيق.