Клуб API Карт

Не происходит объединение меток в кластер

Андрей Болдырев
18 декабря 2013, 23:49

Есть полностью рабочий код код:

 

var eggsOdjects = [];
for(var i = 0; i < coords[coor_num].length; i++) {
    coor_conv[0] = convert(coords[coor_num][i][0], '1');
    coor_conv[1] = convert(coords[coor_num][i][1], '0');
    eggsOdjects[i] = new ymaps.GeoObject({
        geometry: {
            type: "Point",
            coordinates: coords[coor_num][i]
        },
        properties: {
            clusterCaption: 'Объект № ' + (i + 1),
            balloonContentHeader: header_text[coor_num][i],
            balloonContentBody: body_text[coor_num][i],
            balloonContentFooter: footer_text[coor_num][i],
            iconContent: '№' + (i + 1)
        }
    }, {
        preset: 'twirl#redStretchyIcon',
    });
}
var eggsCluster = new ymaps.Clusterer({
    clusterDisableClickZoom: true,
    preset: 'twirl#redClusterIcons'
});
eggsCluster.add(eggsOdjects);
myMap.geoObjects.add(eggsCluster);

 

После адаптации его под другие переменные становится не рабочим, точнее метки ставятся, но в кластер не объеденяются (координаты меток те же).

Вот переделанный код:

 

 var eggsOdjects = [];
for(var key in planets[planet_num].artefacts) {
    coor_conv[0] = convert(planets[planet_num].artefacts[key].coordinates[0], '1');
    coor_conv[1] = convert(planets[planet_num].artefacts[key].coordinates[1], '0');
    eggsOdjects[key - 1] = new ymaps.GeoObject({
        geometry: {
            type: "Point",
            coordinates: planets[planet_num].artefacts[key].coordinates
        },
        properties: {
            clusterCaption: 'Объект № ' + key,
            balloonContentHeader: planets[planet_num].artefacts[key].header,
            balloonContentBody: planets[planet_num].artefacts[key].body,
            balloonContentFooter: planets[planet_num].artefacts[key].footer,
            iconContent: '№' + key
        }
    }, {
        preset: 'twirl#redStretchyIcon',
    });
}
var eggsCluster = new ymaps.Clusterer({
    clusterDisableClickZoom: true,
    preset: 'twirl#redClusterIcons'
});
eggsCluster.add(eggsOdjects);
myMap.geoObjects.add(eggsCluster);

 

Где я мог ошибиться?

1 комментарий
Андрей Болдырев
19 декабря 2013, 12:46

Пока ждал ответа сам нашел проблему и решил ее.

Кому может поможет потом. Суть в том, что в этой строке: 

coordinates: planets[planet_num].artefacts[key].coordinates


массив с координатами берется из свойства объекта и, как я понял, не правильно воспринимается тип. Решил я эту проблему добавив переменную-массив и каждый раз присваивал этой переменной значение свойства объекта, т.е.:

 

var coordinates = [];

...

coordinates = planets[planet_num].artefacts[i].coordinates;

 

и уже после этого оперировал этой переменной.