Z tego przewodnika dowiesz się, jak stylizować mapę wyświetlaną w aplikacji na iOS podczas śledzenia podróży.
Zanim zaczniesz
Zanim nadasz mapie styl, musisz mieć aplikację dla użytkowników z tymi funkcjami:
Widok mapy. Zobacz Inicjowanie widoku mapy.
Sposób obsługi zdarzeń widoku mapy. Obsługa zdarzeń widoku mapy
Musisz też skonfigurować usługi backendu, których potrzebuje pakiet Consumer SDK, oraz skonfigurować pakiet Consumer SDK. Więcej informacji znajdziesz w artykułach Konfigurowanie pakietu konsumenckiego SDK i Co to jest Fleet Engine?.
Dostosowywanie mapy
Dostępne są te opcje:
Zdefiniuj styl mapy: za pomocą definiowania stylów map w chmurze możesz nadawać styl kolorom mapy, liniom wielokątnym i innym elementom mapy. Zobacz Określanie stylu mapy.
Dostosowywanie powiększenia kamery: możesz użyć wbudowanej funkcji lub ustawić własne opcje kamery, aby skupić się na podróży. Zapoznaj się z sekcją Dostosowywanie powiększenia kamery w celu skupienia się na podróży.
Dostosowywanie znaczników i linii łamanych: do projektu aplikacji możesz dodawać niestandardowe znaczniki i linie łamane. Te elementy umożliwiają wyświetlanie w aplikacji dla klienta dynamicznego podglądu trasy pojazdu. Zobacz Dostosowywanie znaczników i Dostosowywanie linii łamanych.
Pakiet SDK udostępnia te opcje za pomocą właściwości
consumerMapStyleCoordinator
. Ta właściwość jest dostępna w klasieGMTCMapView
.
nadawanie mapie stylów za pomocą definiowania stylów map w Google Cloud;
Dostosuj wygląd i wygląd komponentu map za pomocą definiowania stylów map w Google Cloud. Styl mapy możesz tworzyć i edytować w konsoli Google Cloud w przypadku wszystkich aplikacji, które korzystają z Map Google, bez konieczności wprowadzania zmian w kodzie. Więcej informacji znajdziesz w artykule o określaniu stylów map w Google Cloud.
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, sprawdź, czy wybrany moduł renderowania map to LATEST
. Sekcje poniżej pokazują na przykładach, jak używać w projekcie stylu map w chmurze.
ConsumerMapView
Aby w komponencie ConsumerMapView
używać stylów map opartych na chmurze, ustaw pole mapId
w komponencie GoogleMapOptions
i przekaż obiekt GoogleMapOptions
do metody 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
Z definiowania stylów map w Google Cloud można korzystać na 2 sposoby:
- Statycznie w pliku XML.
- Dynamicznie z
newInstance
.
Statycznie za pomocą pliku XML
Aby używać w chmurze stylu map z użyciem kodu XML w pliku 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 newInstance
Aby używać definiowania stylów map w Google Cloud z newInstance
w ConsumerMapFragment
, ustaw pole mapId
na GoogleMapOptions
i przekaż wartość 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 w celu skupienia się na podróży
Podczas aktywnej sesji udostępniania podróży użytkownikowi przydaje się widok pojazdu w większym rozmiarze, a nie zbliżenie pojazdu na trasie. Aby to zrobić, dostosuj poziom zoomu aparatu za pomocą wbudowanej funkcji AutoCamera
lub samodzielnie dostosowując działanie aparatu w ten sposób:
AutoCamera
: jeśli chcesz korzystać z usługiAutoCamera
, nie musisz nic robić. Domyślnie kamera podąża za podróżą.Dostosowanie działania kamery: aby dostosować działanie kamery, musisz wyłączyć
AutoCamera
i wprowadzić odpowiednie zmiany.
AutoCamera
domyślnie wyśrodkowuje kamerę
Pakiet Consumer SDK udostępnia funkcję AutoCamera
, która jest domyślnie włączona w wbudowanym przycisku Moja lokalizacja w pakiecie SDK Map. Aparat przybliża obraz, aby skupić się na trasie i kolejnych punktach nawigacyjnych.
Jeśli chcesz korzystać z funkcji AutoCamera
, upewnij się, że jest ona włączona. Więcej informacji znajdziesz w sekcji allowCameraAutoUpdate
.
Szczegółowe informacje o przycisku Moja lokalizacja w pakiecie Maps SDK znajdziesz w sekcji Przycisk Moja lokalizacja w dokumentacji pakietu SDK Map Google na iOS.
Dostosowywanie działania kamery
Aby uzyskać większą kontrolę nad działaniem kamery, możesz wyłączyć AutoCamera
i dostosować działanie kamery.
Włącz lub wyłącz AutoCamera
za pomocą właściwości AllowCameraAutoUpdate
.
Więcej informacji o dostosowywaniu aparatu znajdziesz w dokumentacji Maps SDK na iOS w sekcji Przesuwanie kamery.