Personalizza gli indicatori

Questo documento spiega come personalizzare gli indicatori di veicoli e località nella mappa che utilizzi per l'app di monitoraggio delle spedizioni basata sul web per i consumatori.

Con l'SDK JavaScript Consumer, puoi personalizzare l'aspetto di due tipi di indicatori aggiunti alla mappa:

Puoi farlo in due modi:

  • Più semplice: specifica un oggetto MarkerOptions da applicare a tutti gli indicatori dello stesso tipo. L'SDK Consumer applica lo stile in due situazioni: prima di aggiungere gli indicatori alla mappa e quando i dati utilizzati per gli indicatori sono cambiati.
  • Più avanzato: specifica una funzione di personalizzazione. Le funzioni di personalizzazione consentono di applicare uno stile agli indicatori in base ai dati, nonché di aggiungere interattività agli indicatori, ad esempio la gestione dei clic. In particolare, l'SDK Consumer passa alla funzione di personalizzazione i dati sul tipo di oggetto rappresentato dall'indicatore: veicolo o destinazione. In questo modo, lo stile dell'indicatore può cambiare in base allo stato attuale dell'elemento indicatore stesso, ad esempio il numero di fermate pianificate rimanenti fino alla destinazione. Puoi persino unire i dati provenienti da fonti esterne a Fleet Engine e applicare uno stile all'indicatore in base a queste informazioni.

Esempio semplice: utilizza MarkerOptions

L'esempio seguente mostra come configurare lo stile di un indicatore di veicolo con un oggetto MarkerOptions. Questo esempio imposta l'opacità dell'indicatore 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 di veicolo per visualizzare il numero di fermate rimanenti del 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 agli indicatori

Puoi aggiungere la gestione dei clic a qualsiasi indicatore, come nell'esempio seguente 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 gli indicatori

Puoi utilizzare un InfoWindow per visualizzare informazioni aggiuntive su un indicatore di veicolo o posizione. L'esempio seguente crea un InfoWindow e lo collega a un indicatore di 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();

Passaggi successivi