Клуб API Карт

Создание ломаной линии из массива

upc45
18 февраля 2014, 12:47

Добрый день!

 

Необходимо создать 2 линии из массива координат. Для создания линий использую следующий код: 

var gCollection;

var points = [];

 

gCollection = new ymaps.GeoObjectCollection({}, { preset: "twirl#greenIcon"}) ;

 

points[0] = [55.761, 37.641];

points[1] = [55.0, 36.1];

points[2] = [55.0, 37.1];

 

gCollection.add(new ymaps.Polyline(points, {},{strokeWidth: 5, strokeColor: "001100ff"})) ;

 

points.length = 0;

 

points[0] = [54.761, 37.641];

points[1] = [54.0, 36.1];

points[2] = [54.0, 37.1];


gCollection.add(new ymaps.Polyline(points, {},{strokeWidth: 5, strokeColor: "001100ff"})) ;


myMap.geoObjects.add(gCollection);

 

В результате получаю только одну линию по последним координатам.Такое ощущение, что массив исходных координат не сохраняется при создание объекта Линии, а ссылается на исходный массив. Как исправить? 

 

4 комментария

Вы используете один и тот же массив для двух разных объектов и еще в середине его обнуляете.

Используйте два разных массива, все будет корректно.

Т.е. при создание объекта ymaps.Polyline им используется в дальнейшем переданный массив, а не происходит создание его копии?

Создание копии не происходит - это очень тяжелая операция. Если мы начнем копировать все координаты, создание полигонов сильно замедлится. А ваш кейс довольно редкий.

...

gCollection.add(new ymaps.Polyline(points, {},{strokeWidth: 5, strokeColor: "001100ff"})) ;

 myMap.geoObjects.add(gCollection);

points.length = 0;

...

сначала отрисуйте первую линию, а затем вторую)