Клуб API Карт

Получить точку начала и точку конца сегмента маршрута

Пост в архиве.
mpetrushk
17 июля 2009, 04:48

Вопрос: каким образом можно получить точку начала и точку конца сегмента маршрута.

Если я всё понял правильно, то точку начала можно получить следующим образом: route.getRouteSegment(i).getPolylineIndex();

Но как получить конец куска маршрута? Можно, конечно, взять следующий кусок и его начало, но тогда придётся делать проверку, на то, если следующий кусок последний, то надо брать router.getWayPoint(router.getNumWayPoints()). По-моему это довольно криво, существует ли более естественное решение?

    var waypoints = ["Москва " + from, "Москва " + to];
    var router = new YMaps.Router(waypoints, [], {viewAutoApply: 1});
   
    YMaps.Events.observe(router, router.Events.Success, function() {
            var map = new YMaps.Map(document.getElementById("YMapsID"));
            map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
            map.addOverlay(router);
   
            var route = router.getRoute(0);
            number_of_segments = route.getNumRouteSegments();

            for (var i=0, cur_in_city; i < number_of_segments; i++){
                var start_point = route.getRouteSegment(i).getPolylineIndex();
           }

     };

 
3 комментария
С помощью метода getWayPoint() можно получить точку останова по ее индексу.

Метод getNumWayPoints() возвратит общее количество точек останова (соответственно можно вычислить индекс последней точки).

Соответственно в обработчике события Success пишем:
YMaps.Events.observe(router, router.Events.Success, function() {
    router.getWayPoint(0).setIconContent('Точка отправления');
    router.getWayPoint(router.getNumWayPoints() - 1).setIconContent('Точка прибытия');
    map.addOverlay(router);
});
Я имел ввиду сегмент маршрута (RouteSegments), а не весь маршрут.

Как видно из документации у этого класса отсутсвует метод getWayPoint(), а также getNumWayPoints(). Поэтому вытащить у сегмента (отрезка) маршрута конец не удается.
Метода получения конца сегмента маршрута нет.