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 stylizowanie 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 wielosegmentowych: do projektu aplikacji możesz dodać niestandardowe znaczniki i linie wielosegmentowe. Te elementy umożliwiają wyświetlanie w aplikacji dla klienta dynamicznego podglądu trasy pojazdu. Zobacz artykuły 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 klasieGMTCMapView
.
nadawanie mapie stylów za pomocą definiowania stylów map w Google Cloud;
dostosowywać 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 Definiowanie 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
. W następnych sekcjach znajdziesz przykłady korzystania z definiowania stylów map w Google Cloud w ramach projektu.
ConsumerMapView
Aby używać stylów map opartych na chmurze w komponencie ConsumerMapView
, 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 w pliku XML
Aby używać stylów map w chmurze z plikiem XML w pliku ConsumerMapFragment
, dodaj atrybut XML map:mapId
z określonym atrybutem 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 funkcjiAutoCamera
, nie musisz nic robić. Domyślnie kamera podąża za podróżą.Dostosowywanie działania aparatu: aby dostosować działanie aparatu, musisz wyłączyć
AutoCamera
, a następnie wprowadzić 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 Maps. 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 SDK Map dowiesz się z dokumentacji Map SDK 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.