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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
اختيار نظام أساسي: 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.

معالج نمط النظام الأساسي للخرائط

يمكنك استخدام معالج النمط في Maps Platform كطريقة سريعة لإنشاء كائن نمط JSON. تدعم حزمة تطوير البرامج (SDK) للخرائط لنظام التشغيل iOS تعريفات الأنماط نفسها مثل واجهة برمجة تطبيقات جافا سكريبت للخرائط.

نماذج الرموز الكاملة

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

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

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