Questo documento spiega come personalizzare i marcatori di veicoli e località nella mappa che utilizzi per l'app di monitoraggio delle spedizioni basata sul web per i consumatori.
Con JavaScript Consumer SDK, puoi personalizzare l'aspetto di due tipi di indicatori aggiunti alla mappa:
- Marcatori dei veicoli di consegna: utilizza
deliveryVehicleMarkerCustomization
- Marcatori di destinazione: utilizza
destinationMarkerCustomization
Puoi farlo in due modi:
- Più semplice: specifica un oggetto
MarkerOptions
da applicare a tutti i marcatori dello stesso tipo. L'SDK Consumer applica lo stile in due situazioni: prima di aggiungere i marcatori alla mappa e quando i dati utilizzati per i marcatori sono cambiati. - Più avanzato: specifica una funzione di personalizzazione. Le funzioni di personalizzazione consentono di applicare uno stile ai marcatori in base ai dati, nonché di aggiungere interattività ai marcatori, ad esempio la gestione dei clic. Nello specifico, l'SDK Consumer trasmette alla funzione di personalizzazione i dati sul tipo di oggetto rappresentato dal marker: veicolo o destinazione. Ciò consente di modificare lo stile del marcatore in base allo stato attuale dell'elemento marcatore stesso, ad esempio il numero di soste pianificate rimanenti fino alla destinazione. Puoi anche unire i dati provenienti da origini esterne a Fleet Engine e applicare uno stile al marker in base a queste informazioni.
Esempio semplice: utilizza MarkerOptions
L'esempio seguente mostra come configurare lo stile di un indicatore del veicolo con un oggetto
MarkerOptions
. Questo esempio imposta l'opacità del marcatore al 50%.
JavaScript
deliveryVehicleMarkerCustomization = {
opacity: 0.5
};
TypeScript
deliveryVehicleMarkerCustomization = {
opacity: 0.5
};
Esempio avanzato: utilizza una funzione di personalizzazione
L'esempio seguente mostra come configurare lo stile di un indicatore del veicolo per visualizzare il numero di fermate rimanenti per il veicolo prima di raggiungere la fermata per l'attività pianificata.
JavaScript
deliveryVehicleMarkerCustomization =
(params) => {
var stopsLeft = params.taskTrackingInfo.remainingStopCount;
params.marker.setLabel(`${stopsLeft}`);
};
TypeScript
deliveryVehicleMarkerCustomization =
(params: ShipmentMarkerCustomizationFunctionParams) => {
const stopsLeft = params.taskTrackingInfo.remainingStopCount;
params.marker.setLabel(`${stopsLeft}`);
};
Aggiungere la gestione dei clic ai marcatori
Puoi aggiungere la gestione dei clic a qualsiasi indicatore, ad esempio nel seguente esempio per un indicatore di veicolo.
JavaScript
deliveryVehicleMarkerCustomization =
(params) => {
if (params.isNew) {
params.marker.addListener('click', () => {
// Perform desired action.
});
}
};
TypeScript
deliveryVehicleMarkerCustomization =
(params: ShipmentMarkerCustomizationFunctionParams) => {
if (params.isNew) {
params.marker.addListener('click', () => {
// Perform desired action.
});
}
};
Visualizzare informazioni aggiuntive per i marcatori
Puoi utilizzare un InfoWindow
per visualizzare informazioni aggiuntive su un
veicolo o un indicatore di posizione. L'esempio seguente crea un
InfoWindow
e lo associa a un indicatore del veicolo:
JavaScript
// 1. Create an info window.
const infoWindow = new google.maps.InfoWindow(
{disableAutoPan: true});
locationProvider.addListener('update', e => {
const stopsCount =
e.taskTrackingInfo.remainingStopCount;
infoWindow.setContent(
`Your vehicle is ${stopsCount} stops away.`);
// 2. Attach the info window to a vehicle marker.
// This property can return multiple markers.
const marker = mapView.vehicleMarkers[0];
infoWindow.open(mapView.map, marker);
});
// 3. Close the info window.
infoWindow.close();
TypeScript
// 1. Create an info window.
const infoWindow = new google.maps.InfoWindow(
{disableAutoPan: true});
locationProvider.addListener('update', (e: google.maps.journeySharing.FleetEngineShipmentLocationProviderUpdateEvent) => {
const stopsCount =
e.taskTrackingInfo.remainingStopCount;
infoWindow.setContent(
`Your vehicle is ${stopsCount} stops away.`);
// 2. Attach the info window to a vehicle marker.
// This property can return multiple markers.
const marker = mapView.vehicleMarkers[0];
infoWindow.open(mapView.map, marker);
});
// 3. Close the info window.
infoWindow.close();