Клуб API Карт

вопрос по методу getClosestPoint

zakolesnik
27 января 2010, 18:56

Исходная задача: выравнивать маршрут по зараннее введенным опорным точкам.

Соответсвенно добавил обработчик события наведения на точку:
        YMaps.Events.observe(placemark, placemark.Events.MouseEnter, function(placemark, val) {
            //получаем ближайшую точку маршрута от остановки
            var closest = pl.getClosestPoint(placemark.getGeoPoint());
            var dist = closest.point.distance(placemark.getGeoPoint());
            //если расстояние меньше 2 метров
            if (dist < 2) {
                //заменяем ближайшую точку ломаной координатами остановки
                pl.splicePoints(closest.index, 1, placemark.getGeoPoint());               
                alert("выравняли")
            }
        });

Приосходит ложное срабатывание при приближении вспомогательной точки ломаной к опорной точке, т.е. getClosestPoint выдает данные основной точки, хотя расстояние считалось от вспомогательной. Так и должно быть ?

1 комментарий
Подписаться на комментарии к посту
getClosestPoint возвращает индекс ближайшей вершины, а не вычисленной точки.
вычисленной ближайшей точки в линии нет, и индекса у нее тоже нет.

нужно вам наверно писать как-то так:
pl.splicePoints(closest.index, 0, placemark.getGeoPoint());