Я искал решение этой проблемы в stackoverflow, но поскольку я не мог найти точного решения, я в конечном итоге решил его сам и разместил здесь, надеюсь, что это поможет.
Карты Google предоставляют вам функцию Polyline, которая на основе списка координат может нарисовать ряд строк, соединяющих их все.
Вы можете нарисовать полилинию с помощью одной стрелки со следующим кодом:
var allCoordinates = [
new google.maps.LatLng(26.291, 148.027),
new google.maps.LatLng(26.291, 150.027),
new google.maps.LatLng(22.291, 153.027),
new google.maps.LatLng(18.291, 153.027)
];
var polyline = new google.maps.Polyline({
path: allCoordinates,
strokeColor: color,
strokeOpacity: 1.0,
strokeWeight: 2,
geodesic: true,
icons: [{
icon: {path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW},
offset: '100%'
}]
});
Проблема заключается в том, что стрелка будет отображаться только в последнем сегменте, как показано на следующем рисунке, но иногда маршрут может быть не таким простым, и нам нужно добавить стрелку на каждый сегмент.
Атрибут 'repeat' внутри определения значка может быть другим вариантом, но позволяет определять меру в пикселях и что определенность не будет соответствовать каждому изменению направления на полилинии.
Итак, один из способов, который я нашел для этого, состоял в том, чтобы сделать несколько полилиний, по одному на сегмент, позволяя в этом случае стрелку рисовать на каждом из них. Это код:
var allCoordinates = [
new google.maps.LatLng(26.291, 148.027),
new google.maps.LatLng(26.291, 150.027),
new google.maps.LatLng(22.291, 153.027),
new google.maps.LatLng(18.291, 153.027)
];
for (var i = 0, n = allCoordinates.length; i < n; i++) {
var coordinates = new Array();
for (var j = i; j < i+2 && j < n; j++) {
coordinates[j-i] = allCoordinates[j];
}
var polyline = new google.maps.Polyline({
path: coordinates,
strokeColor: color,
strokeOpacity: 1.0,
strokeWeight: 2,
geodesic: true,
icons: [{
icon: {path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW},
offset: '100%'
}]
});
polyline.setMap(map);
polylines.push(polyline);
}
И это изображение:
Я надеюсь, что это сработает для тех, кто ищет что-то вроде этого!