Вы сможете легко получить отдельные вершины полилинии, сгенерированные с помощью GDirections
. Сначала вы должны убедиться, что передали опцию getPolyline: true
при вызове GDirections.load()
, если вы не прикрепляете GDirections
к карте. Затем вы можете просто выполнить итерацию по каждой вершине ломаной, и тогда вам, вероятно, следует проверить, находится ли ваша точка в пределах определенного порога расстояния от предварительно определенного местоположения.
Рассмотрим следующий пример:
var map = new GMap2(document.getElementById("map"));
var directions = new GDirections(map);
// Your predefined point
var pt = new GLatLng(51.470, -0.453);
directions.load('from: London, UK to: Glasgow, UK', { getPolyline: true });
GEvent.addListener(directions, "load", function() {
for (var i = 0; i < directions.getPolyline().getVertexCount(); i++) {
if (directions.getPolyline().getVertex(i).distanceFrom(pt) < 100) {
// Your predefined point is within 100 meters of the route
}
}
});
Возможно, вы могли бы улучшить этот метод, пропустив некоторые шаги, которые определенно слишком далеко от вашей контрольной точки. Вы можете получить индекс полилинии каждого шага маршрута с помощью метода getPolylineIndex()
. Это может помочь вам ограничить цикл for более узким набором вершин.
Дополнительная литература и справочник: