Новый стиль базовой карты скоро появится на платформе Google Maps. Это обновление стиля карты включает новую цветовую палитру по умолчанию, модернизированные булавки, а также улучшения интерфейса и удобства использования карты. Все стили карт будут автоматически обновлены в марте 2025 г. Дополнительную информацию о доступности и о том, как принять участие раньше, см. в разделе Новый стиль карты для платформы Google Maps .
Помимо изменения стиля объектов на карте, вы также можете полностью их скрыть. В этом примере показано, как скрыть на карте бизнес-достопримечательности (POI) и значки общественного транспорта.
Стилизация работает только с типом карты kGMSTypeNormal .
Применение стилей к вашей карте
Чтобы применить к карте пользовательские стили карты, вызовите GMSMapStyle(...) для создания экземпляра GMSMapStyle , передав URL-адрес локального файла JSON или строку JSON, содержащую определения стиля. Назначьте экземпляр GMSMapStyle свойству mapStyle карты.
Использование файла JSON
В следующих примерах показан вызов GMSMapStyle(...) и передача URL-адреса локального файла:
В следующем примере кода предполагается, что ваш проект содержит файл с именем style.json :
Быстрый
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, чтобы скрыть бизнес-достопримечательности (POI) и значки общественного транспорта:
В следующих примерах показан вызов 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
Следующее объявление стиля скрывает бизнес-достопримечательности (POI) и значки общественного транспорта. Вставьте следующую строку стиля в качестве значения переменной kMapStyle :
Стилизованные карты используют две концепции для применения цветов и других изменений стиля к карте:
Селекторы определяют географические компоненты, которые можно стилизовать на карте. К ним относятся дороги, парки, водоемы и многое другое, а также их обозначения. Селекторы включают в себя функции и элементы , указанные как свойства featureType и elementType .
Стили — это свойства цвета и видимости, которые можно применять к элементам карты. Они определяют отображаемый цвет посредством комбинации значений оттенка, цвета и яркости/гаммы.
Используйте мастер стилизации платформы Карт как быстрый способ создания объекта стилизации JSON. Maps SDK для iOS поддерживает те же объявления стилей, что и Maps JavaScript API.
Полные примеры кода
Репозиторий ApiDemos на GitHub включает примеры, демонстрирующие использование стилей.
Помимо изменения стиля объектов на карте, вы также можете полностью их скрыть. В этом примере показано, как скрыть на карте бизнес-достопримечательности (POI) и значки общественного транспорта.
Стилизация работает только с типом карты kGMSTypeNormal .
Применение стилей к вашей карте
Чтобы применить к карте пользовательские стили карты, вызовите GMSMapStyle(...) для создания экземпляра GMSMapStyle , передав URL-адрес локального файла JSON или строку JSON, содержащую определения стиля. Назначьте экземпляр GMSMapStyle свойству mapStyle карты.
Использование файла JSON
В следующих примерах показан вызов GMSMapStyle(...) и передача URL-адреса локального файла:
В следующем примере кода предполагается, что ваш проект содержит файл с именем style.json :
Быстрый
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, чтобы скрыть бизнес-достопримечательности (POI) и значки общественного транспорта:
В следующих примерах показан вызов 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
Следующее объявление стиля скрывает бизнес-достопримечательности (POI) и значки общественного транспорта. Вставьте следующую строку стиля в качестве значения переменной kMapStyle :
Стилизованные карты используют две концепции для применения цветов и других изменений стиля к карте:
Селекторы определяют географические компоненты, которые можно стилизовать на карте. К ним относятся дороги, парки, водоемы и многое другое, а также их обозначения. Селекторы включают в себя функции и элементы , указанные как свойства featureType и elementType .
Стили — это свойства цвета и видимости, которые можно применять к элементам карты. Они определяют отображаемый цвет посредством комбинации значений оттенка, цвета и яркости/гаммы.
Используйте мастер стилизации платформы Карт как быстрый способ создания объекта стилизации JSON. Maps SDK для iOS поддерживает те же объявления стилей, что и Maps JavaScript API.
Полные примеры кода
Репозиторий ApiDemos на GitHub включает примеры, демонстрирующие использование стилей.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2024-11-20 UTC."],[],[]]