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ą z wdrożonymi tymi elementami:
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 klasieGMTCMapView
.
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 zachowanie 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