Клуб API Карт

PolyLine

Amigo-Sherman
31 мая 2010, 13:41

Доброго дня, уважаемое сообщество. Хотел бы к вам обратиться со следующей проблемой. Есть ли возможность найти длинну polyline - объекта, отрисованного на карте, либо только созданного на основе точек? Заранее благодарю за помощь.

3 комментария
Подписаться на комментарии к посту
Общую длину ломаной можно измерить, перебрав все ее точки и находя между ними расстояние с помощью метода distance():
function getPolylineDistance (polyline) {
    var distance = 0;
   
    for (var i = 0, l = polyline.getNumPoints(), point; i < l; i++) {
        if (point) {
            distance += point.distance(polyline.getPoint(i));
        }
        point = polyline.getPoint(i);
    }
   
    return distance;
}
Пример использования:
var pl = new YMaps.Polyline([
    new YMaps.GeoPoint(37.7,55.7),
    new YMaps.GeoPoint(37.7,55.8),
    new YMaps.GeoPoint(37.8,55.8),
    new YMaps.GeoPoint(37.8,55.7),
    new YMaps.GeoPoint(37.7,55.7)
]);
map.addOverlay(pl);

console.log(getPolylineDistance(pl));
Огромное спасибо, работает на отлично!) Хотелось бы поинтерсоваться, в какой системе измерения идёт измерение?