Добавление карты со стилем

Выберите платформу: Android iOS JavaScript

Эта страница представляет собой краткое руководство по оформлению карты с использованием ночного режима в качестве примера.

Обзор

С помощью настроек стиля вы можете настроить отображение стандартных стилей карт Google, изменяя визуальное отображение таких объектов, как дороги, парки, предприятия и другие интересные места. Это означает, что вы можете подчеркнуть отдельные элементы карты или сделать её гармоничным дополнением к стилю вашего приложения.

Стилизация работает только для типа карты kGMSTypeNormal .

Примените стили к вашей карте

Чтобы применить пользовательские стили к карте, вызовите GMSMapStyle(...) для создания экземпляра GMSMapStyle , передав URL-адрес локального JSON-файла или JSON-строку с определениями стилей. Присвойте экземпляр GMSMapStyle свойству mapStyle карты.

Использовать JSON-файл

В следующих примерах показан вызов функции GMSMapStyle(...) и передача URL-адреса локального файла:

Быстрый

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(...) и передачу строкового ресурса:

Быстрый

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 см. в справочнике по стилям .

Мастер стилизации платформы карт

Используйте мастер стилизации платформы карт , чтобы быстро создать объект стилизации в формате JSON. SDK карт для iOS поддерживает те же объявления стилей, что и JavaScript API карт.

Полные примеры кода

В репозитории ApiDemos на GitHub содержатся примеры, демонстрирующие использование стилей.

Следующий шаг

Узнайте, как скрыть объекты на карте с помощью стилей.