Стиль интерфейса платформы Google Карт скоро изменится. Будет обновлена стандартная цветовая палитра, а сами карты станут удобнее. Все стили карт автоматически обновятся в марте 2025 г. Дополнительные сведения о доступности этих изменений и о том, как включить их раньше, приведены в статье Новый стиль карты для платформы Google Maps.
Помимо изменения стиля объектов на карте, вы также можете полностью их скрыть. В этом примере показано, как скрыть на карте бизнес-достопримечательности (POI) и значки общественного транспорта.
Стилизация работает только для карт normal типа. Стилирование не влияет на карты помещений , поэтому использование стилей для скрытия объектов не предотвращает появление планов этажей помещений на карте.
Передайте объект стиля JSON на свою карту
Чтобы стилизовать карту, вызовите GoogleMap.setMapStyle() передав объект MapStyleOptions , который содержит объявления вашего стиля в формате JSON. Вы можете загрузить JSON из необработанного ресурса или строки, как показано в следующих примерах:
Сырьевой ресурс
В следующем примере кода предполагается, что ваш проект содержит необработанный ресурс с именем style_json :
В следующем примере кода предполагается, что ваш проект содержит строковый ресурс с именем style_json :
packagecom.example.styledmap;importandroid.os.Bundle;importandroid.support.v7.app.AppCompatActivity;importandroid.util.Log;importcom.google.android.gms.maps.CameraUpdateFactory;importcom.google.android.gms.maps.GoogleMap;importcom.google.android.gms.maps.OnMapReadyCallback;importcom.google.android.gms.maps.SupportMapFragment;importcom.google.android.gms.maps.model.LatLng;importcom.google.android.gms.maps.model.MapStyleOptions;/***AstyledmapusingJSONstylesfromastringresource.*/publicclassMapsActivityStringextendsAppCompatActivityimplementsOnMapReadyCallback{privatestaticfinalStringTAG=MapsActivityString.class.getSimpleName();@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//Retrievethecontentviewthatrendersthemap.setContentView(R.layout.activity_maps_string);//GettheSupportMapFragmentandregisterforthecallback//whenthemapisreadyforuse.SupportMapFragmentmapFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);mapFragment.getMapAsync(this);}/***Manipulatesthemapwhenit's available.*TheAPIinvokesthiscallbackwhenthemapisreadyforuse.*/@OverridepublicvoidonMapReady(GoogleMapgoogleMap){//CustomisethestylingofthebasemapusingaJSONobjectdefined//inastringresourcefile.FirstcreateaMapStyleOptionsobject//fromtheJSONstylesstring,thenpassthistothesetMapStyle//methodoftheGoogleMapobject.booleansuccess=googleMap.setMapStyle(newMapStyleOptions(getResources().getString(R.string.style_json)));if(!success){Log.e(TAG,"Style parsing failed.");}//Positionthemap's camera near Sydney, Australia.googleMap.moveCamera(CameraUpdateFactory.newLatLng(newLatLng(-34,151)));}}
Определите строковый ресурс в /res/values/style_strings.xml , содержащий следующее объявление стиля JSON, чтобы скрыть бизнес-цели (POI). В этом файле вам нужно использовать обратную косую черту, чтобы избежать кавычек:
Стилизованные карты используют две концепции для применения цветов и других изменений стиля к карте:
Селекторы определяют географические компоненты, которые можно стилизовать на карте. К ним относятся дороги, парки, водоемы и многое другое, а также их обозначения. Селекторы включают в себя функции и элементы , указанные как свойства featureType и elementType .
Стили — это свойства цвета и видимости, которые можно применять к элементам карты. Они определяют отображаемый цвет посредством комбинации значений оттенка, цвета и яркости/гаммы.
Используйте мастер стилизации платформы Карт как быстрый способ создания объекта стилизации JSON. Maps SDK для Android поддерживает те же объявления стилей, что и Maps JavaScript API.
Полные примеры кода
Репозиторий ApiDemos на GitHub включает примеры, демонстрирующие использование стилей.
Помимо изменения стиля объектов на карте, вы также можете полностью их скрыть. В этом примере показано, как скрыть на карте бизнес-достопримечательности (POI) и значки общественного транспорта.
Стилизация работает только для карт normal типа. Стилирование не влияет на карты помещений , поэтому использование стилей для скрытия объектов не предотвращает появление планов этажей помещений на карте.
Передайте объект стиля JSON на свою карту
Чтобы стилизовать карту, вызовите GoogleMap.setMapStyle() передав объект MapStyleOptions , который содержит объявления вашего стиля в формате JSON. Вы можете загрузить JSON из необработанного ресурса или строки, как показано в следующих примерах:
Сырьевой ресурс
В следующем примере кода предполагается, что ваш проект содержит необработанный ресурс с именем style_json :
В следующем примере кода предполагается, что ваш проект содержит строковый ресурс с именем style_json :
packagecom.example.styledmap;importandroid.os.Bundle;importandroid.support.v7.app.AppCompatActivity;importandroid.util.Log;importcom.google.android.gms.maps.CameraUpdateFactory;importcom.google.android.gms.maps.GoogleMap;importcom.google.android.gms.maps.OnMapReadyCallback;importcom.google.android.gms.maps.SupportMapFragment;importcom.google.android.gms.maps.model.LatLng;importcom.google.android.gms.maps.model.MapStyleOptions;/***AstyledmapusingJSONstylesfromastringresource.*/publicclassMapsActivityStringextendsAppCompatActivityimplementsOnMapReadyCallback{privatestaticfinalStringTAG=MapsActivityString.class.getSimpleName();@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//Retrievethecontentviewthatrendersthemap.setContentView(R.layout.activity_maps_string);//GettheSupportMapFragmentandregisterforthecallback//whenthemapisreadyforuse.SupportMapFragmentmapFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);mapFragment.getMapAsync(this);}/***Manipulatesthemapwhenit's available.*TheAPIinvokesthiscallbackwhenthemapisreadyforuse.*/@OverridepublicvoidonMapReady(GoogleMapgoogleMap){//CustomisethestylingofthebasemapusingaJSONobjectdefined//inastringresourcefile.FirstcreateaMapStyleOptionsobject//fromtheJSONstylesstring,thenpassthistothesetMapStyle//methodoftheGoogleMapobject.booleansuccess=googleMap.setMapStyle(newMapStyleOptions(getResources().getString(R.string.style_json)));if(!success){Log.e(TAG,"Style parsing failed.");}//Positionthemap's camera near Sydney, Australia.googleMap.moveCamera(CameraUpdateFactory.newLatLng(newLatLng(-34,151)));}}
Определите строковый ресурс в /res/values/style_strings.xml , содержащий следующее объявление стиля JSON, чтобы скрыть бизнес-цели (POI). В этом файле вам нужно использовать обратную косую черту, чтобы избежать кавычек:
Стилизованные карты используют две концепции для применения цветов и других изменений стиля к карте:
Селекторы определяют географические компоненты, которые можно стилизовать на карте. К ним относятся дороги, парки, водоемы и многое другое, а также их обозначения. Селекторы включают в себя функции и элементы , указанные как свойства featureType и elementType .
Стили — это свойства цвета и видимости, которые можно применять к элементам карты. Они определяют отображаемый цвет посредством комбинации значений оттенка, цвета и яркости/гаммы.
Используйте мастер стилизации платформы Карт как быстрый способ создания объекта стилизации JSON. Maps SDK для Android поддерживает те же объявления стилей, что и 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-09-28 UTC."],[],[]]