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. Patrz Inicjowanie widoku mapy.
Sposób obsługi zdarzeń wyświetlenia mapy. Obsługa zdarzeń widoku mapy
Musisz też skonfigurować usługi backendu, których wymaga 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:
Nadawanie stylu mapy: możesz określić styl kolorów mapy, linii łamanych i innych obiektów mapy, korzystając ze stylów map działających w chmurze. 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 aparatu, aby było lepiej widoczne podczas podróży.
Dostosowywanie znaczników i linii wielosegmentowych: do projektu aplikacji możesz dodać niestandardowe znaczniki i linie wielosegmentowe. Te elementy umożliwiają aplikacji konsumenta wyświetlanie 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;
Dostosuj wygląd i wygląd komponentu map za pomocą definiowania stylów map w Google Cloud. W konsoli Google Cloud możesz tworzyć i edytować style mapy dla wszystkich swoich aplikacji korzystających 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 używać stylu map w chmurze, sprawdź, czy wybrany mechanizm renderowania map to LATEST
. Sekcje poniżej pokazują na przykładach, jak używać w projekcie stylu map w chmurze.
ConsumerMapView
Aby w ConsumerMapView
używać stylu map opartego na chmurze, ustaw pole mapId
na GoogleMapOptions
i przekaż GoogleMapOptions
jako 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 z użyciem pliku XML.
- Dynamicznie z
newInstance
.
Statycznie w 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 użyciem 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
}
}
Dostosuj powiększenie aparatu, aby skupić 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óżą.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 Map. Aparat przybliża obraz, aby skupić się na trasie i kolejnych punktach nawigacyjnych.
Jeśli chcesz używać funkcji AutoCamera
, upewnij się, że jest włączona. Więcej informacji: 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.
Wyłącz lub włą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.