В этом руководстве описаны способы оформления карты, которая показывается в приложении iOS во время поездки.
Подготовка
Прежде чем настраивать стиль карты, необходимо реализовать в приложении для пользователей следующее:
Карта. Подробнее о том, как инициализировать режим просмотра карты…
Способ обработки событий просмотра карты. Подробнее о том, как обрабатывать события просмотра карты…
Вам также необходимо настроить бэкенд-службы, необходимые для Consumer SDK, и сам Consumer SDK. Подробнее о том, как настроить Consumer SDK и что такое Fleet Engine…
Настройки карты
Доступны следующие настройки:
Настройка стиля карты. Вы можете настраивать цвета, ломаные линии и другие объекты на карте с помощью облачных стилей карт. Подробнее о том, как настроить стиль карты…
Настройте масштаб камеры. Вы можете использовать встроенную функцию или задать собственные параметры камеры, чтобы сосредоточиться на поездке. Подробнее о том, как настроить масштаб камеры, чтобы сосредоточиться на поездке…
Настройка маркеров и ломаных линий. Вы можете добавить в дизайн приложения собственные маркеры и ломаные линии маршрутов. Эти элементы дизайна позволяют приложению для потребителей показывать динамический предварительный просмотр маршрута транспортного средства. Подробнее о том, как настраивать маркеры и как настраивать ломаные линии…
В SDK эти варианты доступны через свойство
consumerMapStyleCoordinator. Это свойство доступно через классGMTCMapView.
Как настроить стиль карты с помощью облачных стилей карт
Настройте внешний вид компонента карты, используя облачные стили карт. Вы можете создавать и редактировать стили карт в консоли Google Cloud для любого из своих приложений, использующих Google Карты, не внося никаких изменений в код. Дополнительную информацию можно найти в статье Облачные стили карт.
Классы ConsumerMapView и ConsumerMapFragment поддерживают облачные стили карт.
Чтобы использовать облачные стили карт, убедитесь, что выбран модуль визуализации LATEST. В следующих разделах приведены примеры использования облачных стилей карт в проекте.
ConsumerMapView
Чтобы использовать облачные стили карт в ConsumerMapView, задайте поле mapId в GoogleMapOptions и передайте GoogleMapOptions в getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment, GoogleMapOptions) или getConsumerGoogleMapAsync(ConsumerMapReadyCallback, FragmentActivity, GoogleMapOptions).
Пример
Java
public class SampleAppActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ConsumerMapView mapView = findViewById(R.id.consumer_map_view);
if (mapView != null) {
GoogleMapOptions optionsWithMapId = new GoogleMapOptions().mapId("map-id");
mapView.getConsumerGoogleMapAsync(
new ConsumerMapReadyCallback() {
@Override
public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
// ...
}
},
/* fragmentActivity= */ this,
/* googleMapOptions= */ optionsWithMapId);
}
}
}
Kotlin
class SampleAppActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val mapView = findViewById(R.id.consumer_map_view) as ConsumerMapView
val optionsWithMapId = GoogleMapOptions().mapId("map-id")
mapView.getConsumerGoogleMapAsync(
object : ConsumerGoogleMap.ConsumerMapReadyCallback() {
override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
// ...
}
},
/* fragmentActivity= */ this,
/* googleMapOptions= */ optionsWithMapId)
}
}
ConsumerMapFragment
Есть два способа использовать облачные стили карт в ConsumerMapFragments:
- Статически с помощью XML.
- Динамически с помощью
newInstance.
Статически с помощью XML.
Чтобы использовать облачные стили карт с XML в ConsumerMapFragment, добавьте XML-атрибут map:mapId с указанным mapId. Вот пример:
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:name="com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerMapFragment"
android:id="@+id/consumer_map_fragment"
map:mapId="map-id"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Динамически с помощью newInstance
Чтобы использовать облачные стили карт с newInstance в ConsumerMapFragment, задайте поле mapId в GoogleMapOptions и передайте GoogleMapOptions в newInstance. Вот пример:
Java
public class SampleFragmentJ extends Fragment {
@Override
public View onCreateView(
@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.consumer_map_fragment, container, false);
GoogleMapOptions optionsWithMapId = new GoogleMapOptions().mapId("map-id");
ConsumerMapFragment consumerMapFragment = ConsumerMapFragment.newInstance(optionsWithMapId);
getParentFragmentManager()
.beginTransaction()
.add(R.id.consumer_map_fragment, consumerMapFragment)
.commit();
consumerMapFragment.getConsumerGoogleMapAsync(
new ConsumerMapReadyCallback() {
@Override
public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
// ...
}
});
return view;
}
}
Kotlin
class SampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.consumer_map_fragment, container, false)
val optionsWithMapId = GoogleMapOptions().mapId("map-id")
val consumerMapFragment = ConsumerMapFragment.newInstance(optionsWithMapId)
parentFragmentManager
.beginTransaction()
.add(R.id.consumer_map_fragment, consumerMapFragment)
.commit()
consumerMapFragment.getConsumerGoogleMapAsync(
object : ConsumerMapReadyCallback() {
override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
// ...
}
})
return view
}
}
Как настроить масштаб камеры, чтобы сосредоточиться на поездке
Во время активного сеанса передачи данных о поездке пользователю полезно видеть более крупное изображение транспортного средства на протяжении всего пути, а не только его положение на маршруте. Для этого нужно настроить уровень масштабирования камеры с помощью встроенного метода AutoCamera или задать поведение камеры самостоятельно, как описано ниже.
AutoCamera. Если вы хотите использоватьAutoCamera, вам не нужно ничего делать. По умолчанию камера следует за поездкой.Настройка поведения камеры. Чтобы настроить поведение камеры, отключите
AutoCamera, а затем задайте нужные параметры.
AutoCamera центрирует камеру по умолчанию
В Consumer SDK есть функция AutoCamera, которая по умолчанию включена для встроенной кнопки Мое местоположение в Maps SDK. Камера приближается, чтобы сфокусироваться на маршруте поездки и следующей путевой точке.
Если вы хотите использовать AutoCamera, убедитесь, что он включен. Подробную информацию можно найти в статье allowCameraAutoUpdate.

Подробную информацию о кнопке Мое местоположение для Maps SDK вы найдете в разделе Кнопка "Мое местоположение" документации по Maps SDK для iOS.
Настройка поведения камеры
Чтобы лучше контролировать поведение камеры, вы можете отключить AutoCamera и настроить ее поведение.
Включите или отключите AutoCamera с помощью свойства AllowCameraAutoUpdate.
Дополнительные сведения о настройке камеры приведены в разделе Перемещение камеры документации по Maps SDK для iOS.
Дальнейшие действия
Как отслеживать поездку на устройстве iOS