Добавить стилизованную карту

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Выберите платформу: 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
  }
}
      

Цель-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
  }
}
      

Цель-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. Maps SDK для iOS поддерживает те же объявления стилей, что и Maps JavaScript API.

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

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

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

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