В этом документе описывается, как настроить внешний вид маршрутов для гусеничных транспортных средств на карте. Маршруты отображаются на карте в виде полилиний. Для каждой пары координат активного или оставшегося пути транспортного средства библиотека создает объект google.maps.Polyline . Вы можете стилизовать объекты Polyline , указав параметры настройки полилиний, которые библиотека затем применяет в двух ситуациях:
- Перед добавлением объектов на карту
- Когда изменяются данные, используемые для объектов.
Полилинии стиля
Подобно тому, как можно настраивать маркеры, вы можете оформлять полилинии маршрутов различными способами:
Стилизация полилиний маршрутов по типу : Используйте
PolylineOptions, чтобы применить их ко всем соответствующим объектамPolylineпри их создании или обновлении. Пример см. в разделе «Стилизация полилиний по типу» .Стилизация полилиний маршрута на основе данных : Укажите функцию настройки на основе данных из системы отслеживания автопарка или из внешних источников:
Данные из системы отслеживания автопарка : Система отслеживания автопарка передает данные о полилиниях в функцию настройки, включая данные о текущем состоянии транспортного средства. Вы можете изменять стиль полилиний на основе этих данных, например, окрашивать объект
Polylineв более темный оттенок или делать его толще, когда транспортное средство движется медленнее.Внешние источники : Вы можете объединить данные отслеживания автопарка с данными из источников, не относящихся к Fleet Engine, и настроить внешний вид объекта
Polylineна основе этой информации.
В качестве примера см. раздел «Стиль полилиний на основе данных» .
Управление видимостью полилиний маршрута : вы можете скрывать или отображать полилинии с помощью свойства
visible. Подробнее см. раздел «Управление видимостью полилиний» в этом руководстве.Отображение дополнительной информации для транспортного средства или маркера местоположения : Вы можете отобразить дополнительную информацию, используя свойство
infowindow. Подробнее см. раздел «Отображение дополнительной информации для транспортного средства или маркера местоположения» в этом руководстве.
Параметры настройки полилинии
Следующие параметры настройки доступны как в FleetEngineVehicleLocationProviderOptions , так и в FleetEngineDeliveryVehicleLocationProviderOptions . Вы можете задать параметры для различных состояний маршрута в процессе движения транспортного средства:
Уже пройденный маршрут : используйте
takenPolylineCustomization- Поездки по запросу , справочник запланированных задач .Активно перемещающийся маршрут : используйте
activePolylineCustomization- Поездки по запросу , справочник запланированных задач .Ещё не пройденный маршрут : используйте
remainingPolylineCustomization- Поездки по запросу , справочник запланированных задач .
Тип полилиний маршрута
Для изменения стиля полилиний маршрута в зависимости от типа, используйте PolylineOptions для изменения стиля объектов Polyline .
В следующем примере показано, как настроить стиль объекта Polyline с помощью PolylineOptions . Следуйте этому шаблону, чтобы настроить стиль любого объекта Polyline , используя любые параметры настройки полилинии маршрута, перечисленные в параметрах настройки Polyline в этом руководстве.
Пример для поездок по требованию или запланированных задач.
JavaScript
activePolylineCustomization = {
strokeWidth: 5,
strokeColor: 'black',
};
Машинопись
activePolylineCustomization = {
strokeWidth: 5,
strokeColor: 'black',
};
Полилинии маршрута, стилизованные под данные.
Для изменения стиля полилиний маршрутов с использованием данных, измените стиль объектов Polyline с помощью функций настройки.
В следующем примере показано, как настроить стиль активного маршрута с помощью функции настройки. Следуйте этому шаблону, чтобы настроить стиль любого объекта Polyline , используя любой из параметров настройки Polyline, перечисленных в разделе «Параметры настройки Polyline» в этом руководстве.
Пример поездок по запросу
JavaScript
// Color the Polyline objects in green if the vehicle is nearby.
activePolylineCustomization =
(params) => {
const distance = params.vehicle.waypoints[0].distanceMeters;
if (distance < 1000) {
// params.polylines contains an ordered list of Polyline objects for
// the path.
for (const polylineObject of params.polylines) {
polylineObject.setOptions({strokeColor: 'green'});
}
}
};
Машинопись
// Color the Polyline objects in green if the vehicle is nearby.
activePolylineCustomization =
(params: VehiclePolylineCustomizationFunctionParams) => {
const distance = params.vehicle.waypoints[0].distanceMeters;
if (distance < 1000) {
// params.polylines contains an ordered list of Polyline objects for
// the path.
for (const polylineObject of params.polylines) {
polylineObject.setOptions({strokeColor: 'green'});
}
}
};
Пример запланированных задач
JavaScript
// Color the Polyline objects in green if the vehicle is nearby.
activePolylineCustomization =
(params) => {
const distance = params.deliveryVehicle.remainingDistanceMeters;
if (distance < 1000) {
// params.polylines contains an ordered list of Polyline objects for
// the path.
for (const polylineObject of params.polylines) {
polylineObject.setOptions({strokeColor: 'green'});
}
}
};
Машинопись
// Color the Polyline objects in green if the vehicle is nearby.
activePolylineCustomization =
(params: DeliveryVehiclePolylineCustomizationFunctionParams) => {
const distance = params.deliveryVehicle.remainingDistanceMeters;
if (distance < 1000) {
// params.polylines contains an ordered list of Polyline objects for
// the path.
for (const polylineObject of params.polylines) {
polylineObject.setOptions({strokeColor: 'green'});
}
}
};
Пример оформления с учетом дорожной ситуации (только для поездок по требованию)
Fleet Engine возвращает данные о скорости движения транспорта на активном и оставшемся участках пути для преследуемого транспортного средства. Вы можете использовать эту информацию для стилизации объектов Polyline в соответствии со скоростью движения транспорта:
JavaScript
// Color the Polyline objects according to their real-time traffic levels
// using '#05f' for normal, '#fa0' for slow, and '#f33' for traffic jam.
activePolylineCustomization =
FleetEngineVehicleLocationProvider.
TRAFFIC_AWARE_ACTIVE_POLYLINE_CUSTOMIZATION_FUNCTION;
// Or alter the objects further after the customization function has been
// run -- in this example, change the blue for normal to green:
activePolylineCustomization =
(params) => {
FleetEngineVehicleLocationProvider.
TRAFFIC_AWARE_ACTIVE_POLYLINE_CUSTOMIZATION_FUNCTION(params);
for (const polylineObject of params.polylines) {
if (polylineObject.get('strokeColor') === '#05f') {
polylineObject.setOptions({strokeColor: 'green'});
}
}
};
Машинопись
// Color the Polyline objects according to their real-time traffic levels
// using '#05f' for normal, '#fa0' for slow, and '#f33' for traffic jam.
activePolylineCustomization =
FleetEngineVehicleLocationProvider.
TRAFFIC_AWARE_ACTIVE_POLYLINE_CUSTOMIZATION_FUNCTION;
// Or alter the objects further after the customization function has been
// run -- in this example, change the blue for normal to green:
activePolylineCustomization =
(params: VehiclePolylineCustomizationFunctionParams) => {
FleetEngineVehicleLocationProvider.
TRAFFIC_AWARE_ACTIVE_POLYLINE_CUSTOMIZATION_FUNCTION(params);
for (const polylineObject of params.polylines) {
if (polylineObject.get('strokeColor') === '#05f') {
polylineObject.setOptions({strokeColor: 'green'});
}
}
};
Управление видимостью полилиний
По умолчанию все объекты Polyline видимы. Чтобы сделать объект Polyline невидимым, установите для его свойства visible значение false .
Пример для поездок по требованию или запланированных задач.
JavaScript
remainingPolylineCustomization = {visible: false};
Машинопись
remainingPolylineCustomization = {visible: false};
Отобразить информационное окно для указателя транспортного средства или местоположения.
С помощью InfoWindow можно отобразить дополнительную информацию о транспортном средстве или маркере местоположения.
В следующем примере показано, как создать InfoWindow и прикрепить его к маркеру транспортного средства.
Пример поездок по запросу
JavaScript
// 1. Create an info window.
const infoWindow = new google.maps.InfoWindow(
{disableAutoPan: true});
// (Assumes a vehicle location provider.)
locationProvider.addListener('update', e => {
if (e.vehicle) {
const distance =
e.vehicle.remainingDistanceMeters;
infoWindow.setContent(
`Your vehicle is ${distance}m away from the next drop-off point.`);
// 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();
Машинопись
// 1. Create an info window.
const infoWindow = new google.maps.InfoWindow(
{disableAutoPan: true});
// (Assumes a vehicle location provider.)
locationProvider.addListener('update', (e: google.maps.journeySharing.FleetEngineVehicleLocationProviderUpdateEvent) => {
if (e.vehicle) {
const distance =
e.vehicle.remainingDistanceMeters;
infoWindow.setContent(
`Your vehicle is ${distance}m away from the next drop-off.`);
// 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();
Пример запланированных задач
JavaScript
// 1. Create an info window.
const infoWindow = new google.maps.InfoWindow(
{disableAutoPan: true});
// (Assumes a delivery vehicle location provider.)
locationProvider.addListener('update', e => {
if (e.deliveryVehicle) {
const distance =
e.deliveryVehicle.remainingDistanceMeters;
infoWindow.setContent(
`Your vehicle is ${distance}m away from the next task.`);
// 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();
Машинопись
// 1. Create an info window.
const infoWindow = new google.maps.InfoWindow(
{disableAutoPan: true});
// (Assumes a delivery vehicle location provider.)
locationProvider.addListener('update', (e: google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderUpdateEvent) => {
if (e.deliveryVehicle) {
const distance =
e.deliveryVehicle.remainingDistanceMeters;
infoWindow.setContent(
`Your vehicle is ${distance}m away from the next task.`);
// 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();