Я создаю приложение, которое запрашивает API направления Google Maps и ранжирует различные предлагаемые пути на основе внешних метрик. После того, как пользователь решит, по какому пути он хочет пойти, я хочу, чтобы он был перенаправлен в Google Maps по указанному пути c, чтобы он мог использовать функции навигации.
Есть ли способ создать ссылку на карты Google, чтобы она открыла определенный c пешеходный маршрут между двумя точками? Кажется, что единственные параметры, которые я могу указать, это источник, пункт назначения и путевые точки.
Глядя на документацию ( Ссылка ), я смог заставить что-то работать, взяв ломаную линию маршрут и разбивка его на путевые точки:
const waypoints = decodePolyline(this.props.route);
// Create URL
if(waypoints.length > 0) {
const baseUrl = "https://www.google.com/maps/dir/?api=1";
const origin = "&origin=" + waypoints[0].lat.toString() + "," + waypoints[0].lng.toString()
const end = "&destination=" + waypoints[endIndex].lat.toString() + "," + waypoints[endIndex].lng.toString() + "&travelmode=walking";
let steps = "&waypoints=";
let i;
let inc = Math.floor(waypoints.length / 8);
for(i = 1; i < waypoints.length-1; i=i+inc) {
steps += waypoints[i].lat.toString() + "," + waypoints[i].lng.toString()
if(i !== waypoints.length-2) {
steps += "|"
}
}
const url = baseUrl + origin + steps.substring(0, steps.length-1) + end;
console.log(url)
}
Поскольку существует ограничение на количество путевых точек, я не включаю каждую точку. Следовательно, эта строка кода ограничивается 8 путевыми точками:
let inc = Math.floor(waypoints.length / 8);
В результате пользователь перенаправляется на страницу с указаниями, содержащими путевые точки, которые на самом деле не важны для пользователя. Кроме того, на более длинных маршрутах разбиение на отдельные путевые точки приводит к тому, что маршрут в моем веб-сервисе не соответствует маршруту на картах Google.