Este documento explica como personalizar marcadores de veículo e local no mapa. que você usa para seu app de rastreamento de remessas baseado na Web para consumidores.
Com o SDK JavaScript para consumidores, você pode personalizar a aparência de dois tipos de marcadores adicionados ao mapa:
- Marcadores do veículo de entrega: use
deliveryVehicleMarkerCustomization
- Marcadores de destino: use
destinationMarkerCustomization
.
Isso pode ser feito de duas maneiras:
- Mais simples: especifique um objeto
MarkerOptions
para aplicar a todos os marcadores. do mesmo tipo. Em seguida, o SDK do consumidor aplica o estilo em duas antes de adicionar os marcadores ao mapa e quando os dados usados dos marcadores foram alterados. - Mais avançado: especifique uma função de personalização. Funções de personalização permitir a estilização dos marcadores com base em dados, além de adicionar interatividade aos marcadores, como o tratamento de cliques. Especificamente, o consumidor O SDK transmite dados para a função de personalização sobre o tipo de objeto que O marcador representa: veículo ou destino. Isso permite a estilização do marcador seja alterado com base no estado atual do próprio elemento marcador; para exemplo, o número de paradas planejadas restantes até o destino. Você e até mesclar dados de fontes externas ao Fleet Engine e estilizar marcador com base nessas informações.
Exemplo simples: use MarkerOptions
O exemplo a seguir mostra como configurar o estilo de um marcador de veículo com um
MarkerOptions
. Este exemplo define a opacidade do marcador como 50%.
JavaScript
deliveryVehicleMarkerCustomization = {
opacity: 0.5
};
TypeScript
deliveryVehicleMarkerCustomization = {
opacity: 0.5
};
Exemplo avançado: usar uma função de personalização
O exemplo a seguir mostra como configurar o estilo de um marcador de veículo para exibir o número de paradas restantes para o veículo antes de chegar à parada por a tarefa agendada.
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}`);
};
Adicionar o gerenciamento de cliques aos marcadores
É possível adicionar o processamento de cliques a qualquer marcador, como no exemplo a seguir para um marcador de veículo.
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.
});
}
};
Mostrar mais informações sobre marcadores
Você pode usar uma InfoWindow
para exibir mais informações sobre um
marcador de local ou veículo. O exemplo a seguir cria um
InfoWindow
e o anexa a um marcador de veículo:
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();