Z tej sekcji dowiesz się, jak używać biblioteki śledzenia floty w JavaScript do śledzenia pojazdu w przypadku przejazdów na żądanie lub zaplanowanych zadań.
Aby śledzić pojazd, wykonaj te czynności:
- Ładowanie biblioteki i inicjowanie widoku mapy
- Podaj lokalizację pojazdu i widok mapy
- Nasłuchiwanie zdarzeń i obsługa błędów
- Zatrzymanie śledzenia
Załaduj bibliotekę i inicjuj widok mapy
Aby wyświetlać na mapie na stronie internetowej operacje floty, użyj skryptu, który wywołuje mapę za pomocą klucza interfejsu API. Poniżej przedstawiamy, jak to zrobić w HTML:
Źródło adresu URL: wywołuje interfejs API Map Google, aby poprosić o mapę, używając klucza interfejsu API.
Parametr
callback
: wywołuje funkcjęinitMap
po zwróceniu wywołania przez interfejs API.parametr
libraries
: wczytuje bibliotekę śledzenia Fleet;Atrybut
defer
: pozwala przeglądarce kontynuować renderowanie reszty strony podczas wczytywania interfejsu API.<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap&libraries=journeySharing" defer></script>
Podaj lokalizację pojazdu i widok mapy
Aby rozpocząć śledzenie pojazdu, utworzysz instancję dostawcy lokalizacji pojazdu i skonfigurujesz widok mapy z identyfikatorem pojazdu zgodnie z opisem w kolejnych sekcjach.
Tworzenie wystąpienia dostawcy danych o lokalizacji pojazdu
Biblioteka JavaScript do śledzenia floty zawiera dostawcę lokalizacji dla interfejsu Fleet Engine API. Użyj identyfikatora projektu i odwołania do funkcji pobierającej token, aby utworzyć jej instancję, jak pokazano w następujących przykładach.
Przejazdy na żądanie
JavaScript
locationProvider =
new google.maps.journeySharing
.FleetEngineVehicleLocationProvider({
projectId,
authTokenFetcher,
// Optionally, you may specify
// vehicleId to immediately start
// tracking.
vehicleId: 'your-vehicle-id',
});
TypeScript
locationProvider =
new google.maps.journeySharing
.FleetEngineVehicleLocationProvider({
projectId,
authTokenFetcher,
// Optionally, you may specify
// vehicleId to immediately start
// tracking.
vehicleId: 'your-vehicle-id',
});
Zaplanowane zadania
JavaScript
locationProvider =
new google.maps.journeySharing
.FleetEngineDeliveryVehicleLocationProvider({
projectId,
authTokenFetcher,
// Optionally, you may specify
// deliveryVehicleId to immediately start
// tracking.
deliveryVehicleId: 'your-delivery-id',
});
TypeScript
locationProvider =
new google.maps.journeySharing
.FleetEngineDeliveryVehicleLocationProvider({
projectId,
authTokenFetcher,
// Optionally, you may specify
// deliveryVehicleId to immediately start
// tracking.
deliveryVehicleId: 'your-delivery-id',
});
Inicjowanie widoku mapy
Po wczytaniu biblioteki JavaScript Journey Sharing zainicjuj widok mapy i dodaj go do strony HTML. Strona powinna zawierać element <div>, który zawiera widok mapy. W tych przykładach element <div> ma nazwę map_canvas.
Przejazdy na żądanie
JavaScript
const mapView = new
google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
});
// If you did not specify a vehicle ID in the
// location provider constructor, you may do so here.
// Location tracking will start as soon as this is set.
locationProvider.vehicleId
= 'your-vehicle-id';
// Give the map an initial viewport to allow it to
// initialize; otherwise the 'ready' event above may
// not fire. The user also has access to the mapView
// object to customize as they want.
mapView.map.setCenter('Times Square, New York, NY');
mapView.map.setZoom(14);
TypeScript
const mapView = new
google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
});
// If you did not specify a vehicle ID in the
// location provider constructor, you may do so here.
// Location tracking will start as soon as this is set.
locationProvider.VehicleId
= 'your-vehicle-id';
// Give the map an initial viewport to allow it to
// initialize; otherwise the 'ready' event above may
// not fire. The user also has access to the mapView
// object to customize as they want.
mapView.map.setCenter('Times Square, New York, NY');
mapView.map.setZoom(14);
Zaplanowane zadania
JavaScript
const mapView = new
google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
});
// If you did not specify a delivery vehicle ID in the
// location provider constructor, you may do so here.
// Location tracking will start as soon as this is set.
locationProvider.deliveryVehicleId
= 'your-delivery-vehicle-id';
// Give the map an initial viewport to allow it to
// initialize; otherwise the 'ready' event above may
// not fire. The user also has access to the mapView
// object to customize as they want.
mapView.map.setCenter('Times Square, New York, NY');
mapView.map.setZoom(14);
TypeScript
const mapView = new
google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
});
// If you did not specify a delivery vehicle ID in the
// location provider constructor, you may do so here.
// Location tracking will start as soon as this is set.
locationProvider.deliveryVehicleId
= 'your-delivery-vehicle-id';
// Give the map an initial viewport to allow it to
// initialize; otherwise the 'ready' event above may
// not fire. The user also has access to the mapView
// object to customize as they want.
mapView.map.setCenter('Times Square, New York, NY');
mapView.map.setZoom(14);
Nasłuchiwanie zdarzeń i obsługa błędów
Po rozpoczęciu śledzenia pojazdu chcesz aktualizować jego postępy na mapie oraz obsługiwać błędy podczas przemieszczania się pojazdu po trasie.
Nasłuchiwanie zdarzeń związanych z pojazdem
Aby śledzić postępy pojazdu w ramach przejazdów na żądanie lub zaplanowanych zadań, musisz nasłuchiwać zdarzeń zmiany.
Metadane z obiektu vehicle
lub deliveryVehicle
pobierasz za pomocą dostawcy lokalizacji. Metadane obejmują przewidywany czas dojazdu i pozostającą odległość do następnego odbioru lub dowozu pojazdu. Zmiany w metainformacjach uruchamiają zdarzenie update w usługodawcy lokalizacji.
W tym przykładzie pokazujemy, jak odbierać te zdarzenia zmiany.
Przejazdy na żądanie
JavaScript
locationProvider.addListener('update', e => {
// e.vehicle contains data that may be
// useful to the rest of the UI.
if (e.vehicle) {
console.log(e.vehicle.vehicleState);
}
});
TypeScript
locationProvider.addListener('update',
(e: google.maps.journeySharing.FleetEngineVehicleLocationProviderUpdateEvent) => {
// e.vehicle contains data that may be
// useful to the rest of the UI.
if (e.vehicle) {
console.log(e.vehicle.vehicleState);
}
});
Zaplanowane zadania
JavaScript
locationProvider.addListener('update', e => {
// e.deliveryVehicle contains data that may be
// useful to the rest of the UI.
if (e.deliveryVehicle) {
console.log(e.deliveryVehicle.remainingDuration);
}
});
TypeScript
locationProvider.addListener('update',
(e: google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderUpdateEvent) => {
// e.deliveryVehicle contains data that may be
// useful to the rest of the UI.
if (e.deliveryVehicle) {
console.log(e.deliveryVehicle.remainingDuration);
}
});
Obsługuj błędy
Po wczytaniu biblioteki JavaScript Journey Sharing zainicjuj widok mapy i dodaj go do strony HTML. Strona powinna zawierać element <div>, który zawiera widok mapy. W tych przykładach element <div> ma nazwę map_canvas.
Przejazdy na żądanie
JavaScript
const mapView = new
google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
});
// If you did not specify a vehicle ID in the
// location provider constructor, you may do so here.
// Location tracking will start as soon as this is set.
locationProvider.vehicleId
= 'your-vehicle-id';
// Give the map an initial viewport to allow it to
// initialize; otherwise the 'ready' event above may
// not fire. The user also has access to the mapView
// object to customize as they want.
mapView.map.setCenter('Times Square, New York, NY');
mapView.map.setZoom(14);
TypeScript
const mapView = new
google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
});
// If you did not specify a vehicle ID in the
// location provider constructor, you may do so here.
// Location tracking will start as soon as this is set.
locationProvider.VehicleId
= 'your-vehicle-id';
// Give the map an initial viewport to allow it to
// initialize; otherwise the 'ready' event above may
// not fire. The user also has access to the mapView
// object to customize as they want.
mapView.map.setCenter('Times Square, New York, NY');
mapView.map.setZoom(14);
Zaplanowane zadania
JavaScript
const mapView = new
google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
});
// If you did not specify a delivery vehicle ID in the
// location provider constructor, you may do so here.
// Location tracking will start as soon as this is set.
locationProvider.deliveryVehicleId
= 'your-delivery-vehicle-id';
// Give the map an initial viewport to allow it to
// initialize; otherwise the 'ready' event above may
// not fire. The user also has access to the mapView
// object to customize as they want.
mapView.map.setCenter('Times Square, New York, NY');
mapView.map.setZoom(14);
TypeScript
const mapView = new
google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
});
// If you did not specify a delivery vehicle ID in the
// location provider constructor, you may do so here.
// Location tracking will start as soon as this is set.
locationProvider.deliveryVehicleId
= 'your-delivery-vehicle-id';
// Give the map an initial viewport to allow it to
// initialize; otherwise the 'ready' event above may
// not fire. The user also has access to the mapView
// object to customize as they want.
mapView.map.setCenter('Times Square, New York, NY');
mapView.map.setZoom(14);
Zatrzymywanie śledzenia pojazdu
Aby przestać śledzić pojazd, musisz usunąć go z usługi dostawcy lokalizacji i usunąć tę usługę z widoku mapy w sposób opisany w następnych sekcjach. Przykłady te dotyczą zarówno realizacji przejazdów na żądanie, jak i zadań zaplanowanych.
Usuwanie pojazdu z usługodawcy lokalizacji
Aby dostawca lokalizacji przestał śledzić pojazd, usuń identyfikator pojazdu dostawczego od dostawcy lokalizacji.
Przejazdy na żądanie
JavaScript
locationProvider.vehicleId = '';
TypeScript
locationProvider.vehicleId = '';
Zaplanowane zadania
JavaScript
locationProvider.deliveryVehicleId = '';
TypeScript
locationProvider.deliveryVehicleId = '';
Usuwanie dostawcy lokalizacji z widoku mapy
Ten przykład pokazuje, jak usunąć dostawcę lokalizacji z widoku mapy.
JavaScript
mapView.removeLocationProvider(locationProvider);
TypeScript
mapView.removeLocationProvider(locationProvider);