Z tego przewodnika dowiesz się, jak dostosować styl mapy wyświetlanej w aplikacji na iOS podczas śledzenia podróży.
Zanim zaczniesz
Zanim zaczniesz stylizować mapę, musisz mieć aplikację konsumencką, w której zaimplementowano te elementy:
- Widok mapy. Zobacz Inicjowanie widoku mapy. 
- Sposób obsługi zdarzeń widoku mapy. Zobacz Obsługa zdarzeń widoku mapy 
Musisz też skonfigurować usługi backendu, których potrzebuje pakiet SDK dla konsumentów, oraz sam pakiet SDK. Więcej informacji znajdziesz w artykułach Konfigurowanie pakietu Consumer SDK i Czym jest Fleet Engine?.
Dostosowywanie mapy
Dostępne opcje dostosowywania to:
- Zmień styl mapy: możesz zmienić kolory mapy, polilinie i inne elementy mapy za pomocą definiowania stylów map w Google Cloud. Zobacz Stylizowanie mapy. 
- Dostosuj powiększenie kamery: możesz użyć wbudowanej funkcji lub ustawić własne opcje kamery, aby skupić się na podróży. Zobacz Dostosowywanie powiększenia kamery, aby skupić się na przejeździe. 
- Dostosowywanie znaczników i linii łamanych: do projektu aplikacji możesz dodawać niestandardowe znaczniki i linie łamane trasy. Te elementy projektu umożliwiają wyświetlanie w aplikacji konsumenckiej dynamicznego podglądu trasy pojazdu. Zobacz Dostosowywanie znaczników i Dostosowywanie polilinii. - Pakiet SDK udostępnia te opcje za pomocą właściwości - consumerMapStyleCoordinator. Ta właściwość jest dostępna w klasie- GMTCMapView.
Nadawanie stylu mapie za pomocą definiowania stylów map w Google Cloud
Dostosuj wygląd komponentu mapy za pomocą funkcji definiowania stylów map w Google Cloud. Style map możesz tworzyć i edytować w konsoli Google Cloud w przypadku dowolnej aplikacji korzystającej z Map Google bez konieczności wprowadzania jakichkolwiek zmian w kodzie. Więcej informacji znajdziesz na stronie Definiowanie stylów map w Google Cloud.
Zarówno klasa
ConsumerMapView
, jak i klasa
ConsumerMapFragment
obsługują definiowanie stylów map w Google Cloud.
Aby korzystać z definiowania stylów map w Google Cloud, upewnij się, że wybrany moduł renderujący mapy to LATEST. W sekcjach poniżej znajdziesz przykłady użycia stylów map opartych na chmurze w projekcie.
ConsumerMapView
Aby używać stylów map opartych na chmurze w ConsumerMapView, ustaw pole mapId w GoogleMapOptions i przekaż GoogleMapOptions do funkcji getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment, GoogleMapOptions) lub getConsumerGoogleMapAsync(ConsumerMapReadyCallback, FragmentActivity, GoogleMapOptions).
Przykład
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
W przypadku elementów ConsumerMapFragment możesz korzystać z definiowania stylów map w Google Cloud na 2 sposoby:
- statycznie w pliku XML.
- dynamicznie za pomocą newInstance,
statycznie w pliku XML,
Aby używać definiowania stylów map w Google Cloud z kodem XML w ConsumerMapFragment, dodaj atrybut XML map:mapId z określonym mapId. Przyjrzyj się temu przykładowi:
<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"/>
Dynamicznie z użyciem newInstance
Aby używać definiowania stylów map w Google Cloud z newInstance w ConsumerMapFragment, ustaw pole mapId w GoogleMapOptions i przekaż GoogleMapOptions do newInstance. Przyjrzyj się temu przykładowi:
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
  }
}
Dostosowywanie powiększenia kamery, aby skupić się na podróży
Podczas aktywnej sesji udostępniania przejazdu użytkownikowi przydaje się widok pojazdu z większej odległości w trakcie podróży, a nie zbliżenie pojazdu na trasie. Aby to zrobić, dostosuj poziom powiększenia kamery za pomocą wbudowanego narzędzia AutoCamera lub dostosuj działanie kamery samodzielnie w ten sposób:
- AutoCamera: jeśli chcesz używać- AutoCamera, nie musisz nic robić. Domyślnie kamera śledzi przejazd.
- Dostosowywanie działania kamery: aby dostosować działanie kamery, musisz wyłączyć - AutoCamera, a następnie wprowadzić zmiany.
AutoCamera domyślnie wyśrodkowuje kamerę,
Pakiet SDK dla konsumentów udostępnia funkcję AutoCamera, która jest domyślnie włączona w przypadku wbudowanego przycisku Moja lokalizacja w pakiecie Maps SDK. Aparat powiększy obraz, aby skupić się na trasie przejazdu i następnym punkcie trasy.
Jeśli chcesz używać AutoCamera, upewnij się, że jest włączona. Więcej informacji znajdziesz w sekcji allowCameraAutoUpdate. 

Szczegółowe informacje o przycisku Moja lokalizacja w pakiecie SDK Map znajdziesz w sekcji Przycisk Moja lokalizacja w dokumentacji pakietu SDK Map na iOS.
Dostosowywanie działania kamery
Aby mieć większą kontrolę nad działaniem kamery, możesz wyłączyć AutoCamera i dostosować jej działanie.
Wyłącz lub włącz AutoCamera za pomocą właściwości
AllowCameraAutoUpdate.
Więcej informacji o dostosowywaniu kamery znajdziesz w artykule Przesuwanie kamery w dokumentacji pakietu Maps SDK na iOS.
Co dalej?
Śledzenie przejazdu na urządzeniu z iOS