С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/27: Рейтинг темы: голосов - 27, средняя оценка - 4.74
2 / 2 / 0
Регистрация: 13.11.2008
Сообщений: 210

Кластеризация объектов на Яндекс карте

31.05.2015, 10:10. Показов 5965. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Вывожу заранее заданные объекты на яндекс карте. Объекты
заданы следующим образом:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var myPlaces = [{
            'name': 'ст. м. Алтуфьево,<br>выход метро - поcледний вагон из центра,<br> секция №19',
            'coords': [55.8984, 37.5873]
            },
            {
            'name': 'ст. м. Нагорная,<br>выход метро - единственный,<br>секция №2',
            'coords': [55.6729, 37.6107]
            },
            {
            'name': 'ст. м. Чертановская,<br>выход метро - поcледний вагон из центра,<br>секция  №3',
            'coords': [0, 0]
            },
            {
            'name': 'ст. м. Южная,<br>выход метро - первый вагон из центра,<br>секция №16',
            'coords': [55.6224, 37.6090]
            },
            {
            'name': 'ст. м. Лубянка,<br>выход метро - единственный,<br>секция №7',
            'coords': [55.759162, 37.627346]
            },
            {
            'name': 'ст. м. Аэропорт,<br>выход метро - первый вагон из центра,<br>секция №19',
            'coords': [55.8003, 37.5329]
            },
            {
            'name': 'ст. м. Кантемировская,<br>выход метро - последний вагон из центра,<br>секция №11',
            'coords': [55.6361, 37.6562]
            },
            {
            'name': 'ст. м. Красногвардейская,<br>выход метро - поcледний вагон из центра,<br>секция №17',
            'coords': [55.6137, 37.7464]
            }]
Но есть 2 объекта, которые нужно кластеризовать:
JavaScript
1
2
3
4
5
6
    var points = [{
        'name':'ст. м. Текстильщики,<br>выход метро - первый вагон из центра,<br>секция №17',
         'coords':[55.7082, 37.7299]}, 
        {'name':'ст. м. Текстильщики,<br>выход метро - поcледний вагон из центра,<br>секция №10',
         'coords':[55.7090, 37.7326]
         }];
Точки, которые в массиве myPlaces выводяться нормально, но когда пытаюсь выводить дополнительно кластер из двух точек, то карта вовсе не загружается или загружается, но без данного кластера. Код при помощи которого пытаюсь всё это выводить:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
    ymaps.ready(
     function()
     { myMap = new ymaps.Map(
       'map', 
       { center:[55.7470, 37.6806], 
        zoom:10 /*, 
       controls: ['geolocationControl', 'typeSelector'],
        behaviors: ['Drag', 'rightMouseButtonMagnifier', 'dblClickZoom']*/
       } 
      ),
           clusterer = new ymaps.Clusterer({
            // Зададим массив, описывающий иконки кластеров разного размера.
            clusterIcons: [{
                href: 'img/map3.png',
                size: [39, 49],
                offset: [-29, -39]
            }],
            // Эта опция отвечает за размеры кластеров.
            // В данном случае для кластеров, содержащих до 100 элементов,
            // будет показываться маленькая иконка. Для остальных - большая.
            clusterNumbers: [100],
            clusterIconContentLayout: null
        }),
 
 
 
         myGeoObjects = [];
        
    for (var i = 0, i < 2; i++) 
    {
       var placecluster[i] = new ymaps.Placemark([parseFloat (points[i].coords[0]), parseFloat(points[i].coords[1])], 
                                            {balloonContent: points[i].name}
        
 
    );
        myGeoObjects.push(placecluster);
    }
 
    clusterer.add(myGeoObjects);
    myMap.geoObjects.add(clusterer);
 
     myMap.setBounds(clusterer.getBounds(), 
     { checkZoomRange: true }).then(function()
            { 
                if (myMap.getZoom() > 10) 
                myMap.setZoom(10);
            }
        );
            
      
    myMap.behaviors.enable(['drag', 'rightMouseButtonMagnifier']);
      myMap.controls.add('zoomControl', {position: {right: 10, top: 200}});
 
      myMap.controls.add('rulerControl');
      myMap.controls.add('routeEditor'); 
 
    for (i = 0; i < 23; i++){   
 
        myPlacemark = new ymaps.Placemark(
         [parseFloat (myPlaces[i].coords[0]),parseFloat(myPlaces[i].coords[1])], 
         { /*hintContent: "Pens5.ru Пункт самовывоза. " + myPlaces[i].name,*/
          balloonContent: myPlaces[i].name
          
         },
         { 
            
            preset: 'islands#icon',
            iconColor: '#0095b6',
            iconLayout: 'default#image',
            iconImageHref: 'img/map3.png',
            iconImageSize: [29, 39],
            iconImageOffset: [-29, -39],
            hideIconOnBalloonOpen: false
 
         }
        );
 
          myMap.geoObjects.add(myPlacemark,i);
 
     }
 
     
     }
 
);
Благодарю за внимание.

Добавлено через 8 часов 17 минут
Скажите, пожалуйста, в чём может быть ошибка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2015, 10:10
Ответы с готовыми решениями:

Кластеризация точечных объектов
Ребята помогите. Имеется карта на которой есть множество точечных объектов. Но отображаются они все не важно при каком масштабе. Нужно...

Java Android - сделать кнопку "показать адрес на карте", которая вызывает яндекс-карты или яндекс-навигатор и гугл-карты
Доброго дня, формучане! Подскажите, как сделать возможность из моего приложения при клике по кнопке &quot;Показать на карте&quot; перейти...

Метки на карте Яндекс
Вопрос: Как сделать что бы при нажатие на метку(иконку на карте) появилось окно где была бы картинка с текстом? Вот я нашел ссылку как...

18
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
31.05.2015, 17:46
ошибка может быть в том что вы не соеденили два этих массива

Добавлено через 1 минуту
я вообще не понял где вы берёте этот массив myPlaces и его как-либо задействуете, а про второй вообще молчу
0
2 / 2 / 0
Регистрация: 13.11.2008
Сообщений: 210
31.05.2015, 18:14  [ТС]
Цитата Сообщение от BANO Посмотреть сообщение
ошибка может быть в том что вы не соеденили два этих массива
Зачем их соединять ?
Цитата Сообщение от BANO Посмотреть сообщение
я вообще не понял где вы берёте этот массив myPlaces и его как-либо задействуете
Самый верхний пост, первый листинг.
Цитата Сообщение от BANO Посмотреть сообщение
а про второй вообще молчу
А разве есть что сказать дельное?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
31.05.2015, 18:27

Не по теме:

да
нашёл человека, который как и я любит придираться к словам )))


ты его где в коде использовал? нигде ты его просто объявил и всё, больше ничего с ним не сделал
я тебе говорю что не вижу его в 3 листенге, ты мне покажи где там он используется, может тогда легче будет понимать почему не работает

Добавлено через 1 минуту
Цитата Сообщение от pro1004ok Посмотреть сообщение
Зачем их соединять ?
ну наверное так легче будет всё это давать бедному api
просто взять и соединить, чтобы не парится с двумя, а парится с одним

Добавлено через 39 секунд
у массивов есть concat

Добавлено через 1 минуту
всё я нашёл myPlaces, но всё равно не вижу где ты использовал переменную points

Добавлено через 1 минуту
а теперь и points нашёл
но зачем их разделять я не понимаю
1
2 / 2 / 0
Регистрация: 13.11.2008
Сообщений: 210
31.05.2015, 18:32  [ТС]
Цитата Сообщение от BANO Посмотреть сообщение
но всё равно не вижу где ты использовал переменную points
JavaScript
1
2
3
4
5
6
7
8
9
 for (var i = 0, i < 2; i++) 
    {
       var placecluster[i] = new ymaps.Placemark([parseFloat (points[i].coords[0]), parseFloat(points[i].coords[1])], 
                                            {balloonContent: points[i].name}
        
 
    );
        myGeoObjects.push(placecluster);
    }
Добавлено через 2 минуты
Цитата Сообщение от BANO Посмотреть сообщение
а теперь и points нашёл
но зачем их разделять я не понимаю
Удобнее.
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
31.05.2015, 18:41
а без обработки points как я понял это работает

Добавлено через 3 минуты
Удобнее
а где удобнее-то
там у тебя что в одно что в другом одна и таже иконка
0
2 / 2 / 0
Регистрация: 13.11.2008
Сообщений: 210
31.05.2015, 18:47  [ТС]
Цитата Сообщение от BANO Посмотреть сообщение
а без обработки points как я понял это работает
Если не секрет, то как же это работает?
Без points у меня просто не получается кластер.
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
31.05.2015, 18:52
я так и не понял почему ты так замороченно это делаешь, зачем тебе там кластеры, если у тебя это уже разделенно на два разных массива
0
2 / 2 / 0
Регистрация: 13.11.2008
Сообщений: 210
31.05.2015, 18:59  [ТС]
Цитата Сообщение от BANO Посмотреть сообщение
я так и не понял почему ты так замороченно это делаешь, зачем тебе там кластеры, если у тебя это уже разделенно на два разных массива
Кластер нужен для того, чтобы совместить те самые 2 точки в одну, т.к они близко друг к другу расположены (в малом масштабе)
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
31.05.2015, 19:05
блин я вообще запутался, вроде код правильный и всё "по феншую", но не работает
я честно в ступоре

Добавлено через 48 секунд
pro1004ok, это я в документации прочитал, и про колекции прочитал, и теперь у меня ступор ещё больше, поскольку я понял что ничерта не понял

Добавлено через 1 минуту
а зачем тебе на 78 строке нужно количество объектов?
0
2 / 2 / 0
Регистрация: 13.11.2008
Сообщений: 210
31.05.2015, 19:05  [ТС]
Цитата Сообщение от BANO Посмотреть сообщение
блин я вообще запутался, вроде код правильный и всё "по феншую", но не работает
я честно в ступоре
Да вот и я тоже в ступоре ...
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
31.05.2015, 19:07
погоди, а почему ты тогда не сделаешь myPlaces коллекцией?

Добавлено через 27 секунд
хотя да так будет не очень удобно

Добавлено через 15 секунд
в общем меня пока смущает только 78 строка
0
2 / 2 / 0
Регистрация: 13.11.2008
Сообщений: 210
31.05.2015, 19:08  [ТС]
Цитата Сообщение от BANO Посмотреть сообщение
а зачем тебе на 78 строке нужно количество объектов?
На 78 строке добавляются объекты (именно обычные, не кластеризованные точки myPlaces) на карту. В этом месте всё верно.
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
31.05.2015, 19:15
как я понял, там не надо указывать id, который ты таким макаром сметаешь, короче попробуй просто убрать i в 78 строке и посмотри что получилось

Добавлено через 1 минуту
ну во всяком случае в примерах документации про id вообще ничего не видно(ну я не заметил)

Добавлено через 2 минуты
прошерстил поисковиком, ни в одном примере нету второго параметра у geoObjects.add
0
2 / 2 / 0
Регистрация: 13.11.2008
Сообщений: 210
31.05.2015, 19:25  [ТС]
Цитата Сообщение от BANO Посмотреть сообщение
как я понял, там не надо указывать id, который ты таким макаром сметаешь, короче попробуй просто убрать i в 78 строке и посмотри что получилось
Попробовал, ничего из этого не получилось

Добавлено через 8 минут
Цитата Сообщение от BANO Посмотреть сообщение
ну во всяком случае в примерах документации про id вообще ничего не видно(ну я не заметил)
До добавления кластера с этим id всё нормально работало, а почему сейчас не работает - пока не знаю...
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
31.05.2015, 19:31
тк ты при добавлении кластера не указываешь id
а при добавлении элементов начинаешь "перезаписывать" эти id
ну допустим при добавлении кластера ему присвоенно id = 1
а ты в цикле для запихивания myPlaces берёшь все цифры от 0 да 23
вот тут-то и может возникнуть облом, но я не уверен что эта i вообще что-либо делает

Добавлено через 21 секунду
можешь на jsfidle скинуть эту вещь?
0
2 / 2 / 0
Регистрация: 13.11.2008
Сообщений: 210
31.05.2015, 23:19  [ТС]
Цитата Сообщение от BANO Посмотреть сообщение
можешь на jsfidle скинуть эту вещь?
Скинул http://jsfiddle.net/dojadyep/
0
134 / 130 / 57
Регистрация: 29.12.2011
Сообщений: 359
31.05.2015, 23:58
Цитата Сообщение от pro1004ok Посмотреть сообщение
for (var i = 0, i < 2; i++)
после var i = 0 стоит запятая - так задумано?
Цитата Сообщение от pro1004ok Посмотреть сообщение
var placecluster[i]
это вообще невалидно, не знаю что Вы хотели этим сделать
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
01.06.2015, 13:01
он ругается в основном на грамматику, ты проверь его в каком-нибудь ide(webstorm или phpstorm)
а я код возьму и завтра посмотрю в своём ide

Добавлено через 12 часов 55 минут
JokerNN, собствнно говоря именно на это и ругается

Добавлено через 1 минуту
pro1004ok, ты в jsfidle не подключил api карт, а я не знаю какую ты там версию выбрал, но граматику я под правил
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
var myPlaces = [{
    'name': 'ст. м. Алтуфьево,<br>выход метро - поcледний вагон из центра,<br> секция №19',
    'coords': [55.8984, 37.5873]
},
    {
        'name': 'ст. м. Нагорная,<br>выход метро - единственный,<br>секция №2',
        'coords': [55.6729, 37.6107]
    },
    {
        'name': 'ст. м. Чертановская,<br>выход метро - поcледний вагон из центра,<br>секция  №3',
        'coords': [0, 0]
    },
    {
        'name': 'ст. м. Южная,<br>выход метро - первый вагон из центра,<br>секция №16',
        'coords': [55.6224, 37.6090]
    },
    {
        'name': 'ст. м. Лубянка,<br>выход метро - единственный,<br>секция №7',
        'coords': [55.759162, 37.627346]
    },
    {
        'name': 'ст. м. Аэропорт,<br>выход метро - первый вагон из центра,<br>секция №19',
        'coords': [55.8003, 37.5329]
    },
    {
        'name': 'ст. м. Кантемировская,<br>выход метро - последний вагон из центра,<br>секция №11',
        'coords': [55.6361, 37.6562]
    },
    {
        'name': 'ст. м. Красногвардейская,<br>выход метро - поcледний вагон из центра,<br>секция №17',
        'coords': [55.6137, 37.7464]
    }];
var points = [{
    'name':'ст. м. Текстильщики,<br>выход метро - первый вагон из центра,<br>секция №17',
    'coords':[55.7082, 37.7299]},
    {'name':'ст. м. Текстильщики,<br>выход метро - поcледний вагон из центра,<br>секция №10',
        'coords':[55.7090, 37.7326]
    }];
 
ymaps.ready(
    function()
    { myMap = new ymaps.Map(
        'map',
        { center:[55.7470, 37.6806],
            zoom:10 /*,
         controls: ['geolocationControl', 'typeSelector'],
         behaviors: ['Drag', 'rightMouseButtonMagnifier', 'dblClickZoom']*/
        }
    );
        clusterer = new ymaps.Clusterer({
            // Зададим массив, описывающий иконки кластеров разного размера.
            clusterIcons: [{
                href: 'img/map3.png',
                size: [39, 49],
                offset: [-29, -39]
            }],
            // Эта опция отвечает за размеры кластеров.
            // В данном случае для кластеров, содержащих до 100 элементов,
            // будет показываться маленькая иконка. Для остальных - большая.
            clusterNumbers: [100],
            clusterIconContentLayout: null
        });
 
 
 
        myGeoObjects = [];
 
        for (var i = 0; i < 2; i++)
        {
            placecluster[i] = new ymaps.Placemark([parseFloat (points[i].coords[0]), parseFloat(points[i].coords[1])],
            {balloonContent: points[i].name}
 
 
        );
            myGeoObjects.push(placecluster);
        }
 
        clusterer.add(myGeoObjects);
        myMap.geoObjects.add(clusterer);
 
        myMap.setBounds(clusterer.getBounds(),
            { checkZoomRange: true }).then(function()
            {
                if (myMap.getZoom() > 10)
                    myMap.setZoom(10);
            }
        );
 
 
        myMap.behaviors.enable(['drag', 'rightMouseButtonMagnifier']);
        myMap.controls.add('zoomControl', {position: {right: 10, top: 200}});
 
        myMap.controls.add('rulerControl');
        myMap.controls.add('routeEditor');
 
        for (i = 0; i < 23; i++){
 
            myPlacemark = new ymaps.Placemark(
                [parseFloat (myPlaces[i].coords[0]),parseFloat(myPlaces[i].coords[1])],
                { /*hintContent: "Pens5.ru Пункт самовывоза. " + myPlaces[i].name,*/
                    balloonContent: myPlaces[i].name
 
                },
                {
 
                    preset: 'islands#icon',
                    iconColor: '#0095b6',
                    iconLayout: 'default#image',
                    iconImageHref: 'img/map3.png',
                    iconImageSize: [29, 39],
                    iconImageOffset: [-29, -39],
                    hideIconOnBalloonOpen: false
 
                }
            );
 
            myMap.geoObjects.add(myPlacemark,i);
 
        }
 
 
    }
 
);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2015, 13:01
Помогаю со студенческими работами здесь

Предприятие на Яндекс карте
Привет Форумчане, подскажите пожалуйста как реализовать карту с информацией о моем предприятии? Это должно делаться в каком то сервисе,...

Не отображаются точки на карте Яндекс
В общем, такая проблема. Есть карта. Точки загружаются посредством файла импорта. На старом сайте все работало нормально. После...

Расчёт стоимости проезда по Яндекс карте
Здравствуйте господа! Может быть кто-то знает, как можно реализовать подобный калькулятор стоимости проезда по Яндекс карте ...

Размещение объектов на карте
Здравствуйте! У меня такой вопрос, подгружаю фоновую картинку карты и располагаю её в JFrame f.add(new Map()); Затем хочу поместить в...

Спавн объектов на карте
имеется 2d карта уровня, на ней игроки и прочие объекты. Новые игроки и объекты спавнятся по случайным координатам. Как при спавне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru