Ten przewodnik zawiera wskazówki dotyczące stylizacji mapy wyświetlanej w aplikacji na iOS podczas śledzenia podróży.
Zanim zaczniesz
Zanim spróbujesz nadać 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ń dotyczących 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 Consumer SDK i Co to jest Fleet Engine?.
Dostosowywanie map
Dostępne opcje dostosowywania:
Stylizacja mapy: za pomocą stylizacji map opartej na chmurze możesz stylizować kolory mapy, linie wielokątów i inne elementy mapy. Zobacz sekcję Nadawanie mapie odpowiedniego stylu.
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 wielokątów: w swoim projekcie aplikacji możesz dodawać niestandardowe znaczniki i wielokąty. Te elementy umożliwiają wyświetlanie w aplikacji dla klienta 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 usługa 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. Aby uzyskać więcej informacji, wybierz swoją platformę 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, 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 elementach ConsumerMapFragment
, dodaj atrybut XML map:mapId
z określonym elementem 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 aparatu w celu skupienia się na podróży
Podczas aktywnej sesji udostępniania podróży użytkownik może zobaczyć większy widok pojazdu podczas przejazdu, 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 używaćAutoCamera
, 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 przypadku wbudowanego przycisku Moja lokalizacja w pakiecie SDK Maps. Kamera przybliża się, aby skupić się na trasie i następnym punkcie orientacyjnym.
Jeśli chcesz używać funkcji AutoCamera
, upewnij się, że jest ona włączona. Więcej informacji znajdziesz w allowCameraAutoUpdate
.
Szczegółowe informacje o przycisku Moja lokalizacja w pakiecie SDK Map dostępnych na iOS znajdziesz w dokumentacji do tego pakietu.
Dostosowywanie zachowania 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 Map Google SDK na iOS, w sekcji Przesuwanie kamery.