Z tego przewodnika dowiesz się, jak stylizować mapę wyświetlaną w aplikacji na iOS podczas śledzenia przejazdu.
Zanim zaczniesz
Zanim nadasz styl mapie, musisz mieć aplikację użytkownika, która:
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 wymaga pakiet SDK dla konsumenta, oraz sam pakiet SDK dla konsumenta. Szczegółowe informacje znajdziesz w artykułach Konfigurowanie pakietu SDK dla klientów i Co to jest Fleet Engine?.
Dostosowywanie mapy
Dostępne są te opcje dostosowywania:
Zmienianie stylu mapy: możesz zmieniać 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 Dostosuj powiększenie kamery w celu skupienia 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ą aplikacji użytkownika wyświetlanie dynamicznego podglądu trasy pojazdu. Zobacz Dostosowywanie znaczników i Dostosowywanie linii łamanych.
Pakiet SDK udostępnia te opcje we właściwości
consumerMapStyleCoordinator. Ta właściwość jest dostępna w klasieGMTCMapView.
Definiowanie stylów map w Google Cloud
Dostosuj wygląd i styl komponentu mapy za pomocą 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 w artykule Definiowanie stylów map w Google Cloud (wybierz swoją platformę).
Zarówno klasa ConsumerMapView, jak i ConsumerMapFragment obsługują definiowanie stylów map w Google Cloud.
Aby korzystać z definiowania stylów map w Google Cloud, upewnij się, że wybrany mechanizm renderowania map to LATEST. W sekcjach poniżej znajdziesz przykłady użycia definiowania stylów map w Google Cloud w projekcie.
ConsumerMapView
Aby używać definiowania stylów map w Google Cloud w ConsumerMapView, ustaw pole mapId w GoogleMapOptions i przekaż GoogleMapOptions do 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
Definiowania stylów map w Google Cloud w ConsumerMapFragments można używać na 2 sposoby:
- Statycznie za pomocą kodu XML.
- Dynamicznie za pomocą
newInstance.
statycznie za pomocą pliku XML,
Aby używać definiowania stylów map w Google Cloud z kodem XML w pliku ConsumerMapFragment, dodaj atrybut XML map:mapId z określonym identyfikatorem 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 za pomocą 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
}
}
Dostosuj powiększenie kamery, aby skupić się na przejeździe
Podczas aktywnej sesji udostępniania przejazdu użytkownikowi może być przydatny widok pojazdu na trasie w większym powiększeniu, a nie zbliżenie pojazdu na trasie. Aby to zrobić, dostosuj poziom powiększenia kamery za pomocą wbudowanego AutoCamera lub dostosuj zachowanie kamery samodzielnie w następujący 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 obraz z kamery
Pakiet Consumer SDK udostępnia funkcję AutoCamera, która jest domyślnie włączona na wbudowanym przycisku Moja lokalizacja w pakiecie Maps SDK. Aparat powiększa obraz, aby skupić się na trasie przejazdu i następnym punkcie na trasie.
Jeśli chcesz używać AutoCamera, upewnij się, że jest włączony. Więcej informacji znajdziesz w artykule allowCameraAutoUpdate.

Szczegółowe informacje o przycisku Moja lokalizacja w pakiecie Maps SDK znajdziesz w sekcji Przycisk Moja lokalizacja w dokumentacji pakietu Maps SDK 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 sekcji Przesuwanie kamery w dokumentacji pakietu Maps SDK na iOS.