Как проверить, находится ли точка широты / долготы на GRoute в Google Maps API? - PullRequest
1 голос
/ 21 мая 2010

Я строю маршрут между двумя точками, и мне нужно проверить, проходит ли маршрут через предварительно определенное местоположение. В API каждый GStep имеет начальную и конечную точки, но путь не должен быть прямым. Учитывая точку широты / долготы, есть ли способ проверить, пересекается ли она с маршрутом?

1 Ответ

3 голосов
/ 21 мая 2010

Вы сможете легко получить отдельные вершины полилинии, сгенерированные с помощью 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 более узким набором вершин.

Дополнительная литература и справочник:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...