ConsumerMapStyle
klasa ma metody ustawiania i pobierania, które zapewniają dynamiczne dostosowywanie
dla znaczników i linii łamanych. Ta klasa jest udostępniana asynchronicznie za pomocą metody
ConsumerController.getConsumerMapStyle()
.
Dostosowanie interfejsu jest kontynuowane w czasie obrotu urządzeń i obowiązuje do
ConsumerController
zostanie odłączony.
Znaczniki niestandardowe
Metoda ustawiania typu znacznika i jego właściwości to ConsumerMapStyle.setMarkerStyleOptions()
. Twój niestandardowy
opcje znacznika zastępują wartości domyślne podane przez pakiet SDK dla klientów indywidualnych.
Aby przywrócić wartości domyślne, wywołaj funkcję setMarkerStyleOptions()
z wartością null
dla parametru MarkerOptions
. Odzyskaj aktywną usługę MarkerOptions
za pomocą
getMarkerStyleOptions()
Typy znaczników
Dostępne są następujące znaczniki:
TRIP_PICKUP_POINT
TRIP_DROPOFF_POINT
TRIP_INTERMEDIATE_DESTINATION
TRIP_VEHICLE
TRIP_PICKUP_POINT
i TRIP_DROPOFF_POINT
wyświetlają się podczas monitorowania podróży.
TRIP_VEHICLE
wyświetla się podczas monitorowania podróży. Ikona znacznika się nie zmienia
w zależności od rzeczywistego typu pojazdu używanego w podróży. Aktualizacje pakietu SDK dla klientów indywidualnych
obracanie ikony TRIP_VEHICLE
podczas monitorowania podróży, by imitować
zachowania rzeczywistego pojazdu podczas pokonywania trasy.
Opcje znacznika
Właściwości, które można dostosować, dostępne dla każdego znacznika to:
miejsca zakwaterowania dostarczane przez Mapy Google
MarkerOptions
Obiekt MarkerOptions
został utworzony za pomocą swojego konstruktora, a właściwości niestandardowe określa się za pomocą parametru „Setter” stylu.
Dla każdej usługi podawane są wartości domyślne, więc wystarczy, że określisz wartości niestandardowe.
Znacznik możesz wyłączyć, ustawiając visible
na false
.
Należy zapewnić wystarczającą ilość danych, aby móc użyć zamiast nich własnego elementu interfejsu.
Przykład
Java
// Initializing marker options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener(
consumerMapStyle -> {
consumerMapStyle.setMarkerStyleOptions(
MarkerType.TRIP_VEHICLE,
new MarkerOptions()
.visible(false));
});
// Reset marker options to default values.
consumerMapStyle.setMarkerStyleOptions(MarkerType.TRIP_VEHICLE, null);
Kotlin
// Initializing marker options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener({ consumerMapStyle ->
consumerMapStyle.setMarkerStyleOptions(MarkerType.TRIP_VEHICLE, MarkerOptions().visible(false))
})
// Reset marker options to default values.
consumerMapStyle.setMarkerStyleOptions(MarkerType.TRIP_VEHICLE, null)
Niestandardowe linie łamane
Dostosowywanie linii łamanej jest ustawiane za pomocą metody ConsumerMapStyle.setPolylineStyleOptions
. Ustawianie niestandardowych opcji linii łamanej
zastępuje domyślne wartości podane przez pakiet SDK dla klientów indywidualnych. Wartości domyślne
można przywrócić, dzwoniąc pod numer setPolylineStyleOptions
z wartością null dla parametru PolylineOptions
. Aktywny
PolylineOptions
można pobrać za pomocą
Metoda getPolylineStyleOptions
.
Typy linii łamanych
Dostępne są następujące typy linii łamanych:
ACTIVE_ROUTE
REMAINING_ROUTE
ACTIVE_ROUTE
i REMAINING_ROUTE
są wyświetlane podczas monitorowania podróży oraz
reprezentują trasę pojazdu.
Właściwości linii łamanej
Dostosowywane właściwości każdej linii łamanej są określane w Mapach Google PolylineOptions
.
Obiekt PolylineOptions
został utworzony za pomocą swojego konstruktora, a właściwości niestandardowe określa się za pomocą parametru „Setter” stylu. Wartości domyślne
są podawane dla każdej usługi, więc wystarczy określić tylko wartości niestandardowe.
Aby wyłączyć linię łamaną, ustaw visible
na false
.
Przykład
Java
// Initializing polyline style options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener(
consumerMapStyle -> {
consumerMapStyle.setPolylineStyleOptions(
PolylineType.ACTIVE_ROUTE,
new PolylineOptions()
.visible(false));
});
// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null);
Kotlin
// Initializing polyline options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener({ consumerMapStyle ->
consumerMapStyle.setPolylineStyleOptions(
PolylineType.ACTIVE_ROUTE,
PolylineOptions().visible(false)
)
})
// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null)
Aktywna i pozostała trasa
Po włączeniu opcji Podróż i Postęp zamówień aplikacja może dostosować wrażenia użytkownika dotyczące korzystania z linii łamanych pokazujących aktywne i pozostałe pojazdy .
Aktywna trasa to ścieżka, do której aktualnie podróżuje pojazd. kolejny punkt na trasie aktywnej podróży klienta. Pozostała trasa to ścieżkę, jaką pokonuje pojazd, mijając aktywną trasę. Gdy aktywna trasa punkt pośredni jest ostatnim punktem na trasie podróży, reszta nie istnieje.
Aktywne i pozostałe linie łamane można dostosować oraz kontrolować widoczność przez Twoją aplikację. Domyślnie widoczna jest aktywna trasa, a pozostała trasa nie jest widoczny.
Przykład
Java
// Initializing polyline options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener(
consumerMapStyle -> {
consumerMapStyle.setPolylineStyleOptions(
PolylineType.ACTIVE_ROUTE,
new PolylineOptions()
.color(Color.BLUE));
consumerMapStyle.setPolylineStyleOptions(
PolylineType.REMAINING_ROUTE,
new PolylineOptions()
.color(Color.BLACK)
.width(5)
.visible(true));
});
// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null);
consumerMapStyle.setPolylineStyleOptions(PolylineType.REMAINING_ROUTE, null);
Kotlin
// Initializing polyline options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener({ consumerMapStyle ->
{
consumerMapStyle.setPolylineStyleOptions(
PolylineType.ACTIVE_ROUTE,
PolylineOptions().color(Color.BLUE)
)
consumerMapStyle.setPolylineStyleOptions(
PolylineType.REMAINING_ROUTE,
PolylineOptions().color(Color.BLACK).width(5).visible(true)
)
}
})
// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null)
consumerMapStyle.setPolylineStyleOptions(PolylineType.REMAINING_ROUTE, null)
Linie łamane z uwzględnieniem natężenia ruchu
Warstwa ruchu linii łamanej jest domyślnie wyłączona. Po jego włączeniu segmenty reprezentują obszary nienormalnego ruchu są rysowane nad linią łamaną trasy z-index PolylineOptions.getZIndex() oraz przesunięcie w zależności od warunków ruchu.
Warunki na drogach są przedstawiane jako: czterech rodzajów prędkości. Możesz dostosować kolor do każdego rodzaju szybkości.
Aby włączyć „linie łamane uwzględniające natężenie ruchu”, musisz utworzyć obiekt TrafficStyle
, który będzie przekazywany do ConsumerMapStyle
przez wywołanie metody setPolylineTrafficStyle()
.
Przykład
Java
// TrafficStyle is part of the Consumer SDK.
TrafficStyle trafficStyle = TrafficStyle.builder()
.setTrafficVisibility(true)
.setTrafficColor(SpeedType.NO_DATA, Color.GREY)
.setTrafficColor(SpeedType.NORMAL_VALUE, Color.BLUE)
.setTrafficColor(SpeedType.SLOW_VALUE, Color.ORANGE)
.setTrafficColor(SpeedType.TRAFFIC_JAM, Color.RED)
.build();
consumerMapStyle.setPolylineTrafficStyle(PolylineType.ACTIVE_ROUTE, trafficStyle);
Kotlin
// TrafficStyle is part of the Consumer SDK.
val trafficStyle =
TrafficStyle.builder()
.setTrafficVisibility(true)
.setTrafficColor(SpeedType.NO_DATA, Color.GREY)
.setTrafficColor(SpeedType.NORMAL_VALUE, Color.BLUE)
.setTrafficColor(SpeedType.SLOW_VALUE, Color.ORANGE)
.setTrafficColor(SpeedType.TRAFFIC_JAM, Color.RED)
.build()
consumerMapStyle.setPolylineTrafficStyle(PolylineType.ACTIVE_ROUTE, trafficStyle)
Dostosowywanie powiększenia aparatu w celu skoncentrowania się na podróży
Domyślny przycisk Moja lokalizacja i jest wbudowana w pakiet SDK Maps SDK, kierując aparat na lokalizację urządzenia. Jeśli aktywnej sesji Podróży i Postępu zamówienia, możesz wyśrodkować za pomocą aparatu, aby skupić się na podróży, a nie na lokalizacji urządzenia.
Wbudowany pakiet SDK dla użytkowników urządzeń z Androidem: AutoCamera
Aby umożliwić Ci skupienie się na podróży, a nie na lokalizacji urządzenia, pakiet Consumer SDK zapewnia domyślnie włączoną funkcję automatycznego aparatu. Aparat robi zbliżenie. by skupić się na trasie Podróży i Zamówienia oraz kolejnym punkcie pośrednim podróży.
Dostosowywanie działania kamery
Jeśli chcesz mieć większą kontrolę nad działaniem kamery, możesz ją wyłączyć lub włączyć
Automatyczny aparat używający ConsumerController.setAutoCameraEnabled()
.
ConsumerController.getCameraUpdate()
zwraca w danym momencie zalecane granice kamery. Dostępne opcje
a następnie podaj CameraUpdate
jako argument do
GoogleMap.moveCamera()
lub GoogleMap.animateCamera()
.
Definiowanie stylów map w Google Cloud
Zarówno
ConsumerMapView
oraz
ConsumerMapFragment
klas obsługują określanie stylów map w chmurze.
Aby używać stylu map w chmurze, sprawdź, czy wybrane mapy
mechanizm renderowania to LATEST
. Poniższe przykłady pokazują, jak używać
stosować w projekcie stylowanie map w chmurze.
ConsumerMapView
Aby w ConsumerMapView
używać stylu map w chmurze, ustaw atrybut
mapId
w GoogleMapOptions
i przekazać GoogleMapOptions
do
getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment,
GoogleMapOptions)
or 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
Istnieją 2 sposoby nadawania stylów map w chmurze Fragmenty ConsumerMapFragments:
- Statycznie z użyciem pliku XML.
- Dynamicznie z użyciem funkcji
newInstance
.
Statycznie za pomocą pliku XML
Aby użyć stylu map w chmurze za pomocą 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ć stylu map w chmurze za pomocą usługi newInstance
w
ConsumerMapFragment
, ustaw pole mapId
w domenie 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
}
}