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

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

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

معالِج تصميم النظام الأساسي في "خرائط Google"

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

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

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

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

تعرَّف على كيفية إخفاء الميزات على الخريطة باستخدام الأنماط.