Клуб API Карт

Крик о помощи кластеров и групп

Пост в архиве.

Доброй ночи всем. Не первый час бью голову над связкой кластеризации и групп, но ничего не получается. Может кто помочь советом?

 

<script type="text/javascript">

ymaps.ready(init);

function init() {

    var myMap = new ymaps.Map('YMapsID', {

        center: [59.93334443984601, 30.322608947753906],

        zoom: 10

    });

 

 

var clusterer = new ymaps.Clusterer({

preset: 'islands#darkGreenClusterIcons',

groupByCoordinates: false,

clusterHideIconOnBalloonOpen: false,

        geoObjectHideIconOnBalloonOpen: false

    }),points = [],geoObjects = [];

 

clusterer.options.set({

        gridSize: 80,

        clusterDisableClickZoom: true

    });

 

/* получаем координаты по адресу */

 

ymaps.geocode('Санкт-Петербург, [[+tv.coupon_adres:empty=`метро [[+tv.coupon_subway]]`]]', {results: 1 }).then(function (res) {

var firstGeoObject = res.geoObjects.get(0),

   coords = firstGeoObject.geometry.getCoordinates();

/* создаем метку */

 

var myPlacemark_[[+idx]] = new ymaps.Placemark(coords, {

balloonContent: '[[+introtext:default=`Хранение шин и дисков до R22 на срок до 8 месяцев в «Центральном шинном доме».`]]<br><a href="[[+uri]]">Хочу купон!</a>',

balloonContentHeader: '[[+pagetitle]]'

}, {

       preset: 'default#wifiIcon',

  hideIconOnBalloonOpen: false

    });

 

clusterer.add(myPlacemark_[[+idx]]);

});

 

 

clusterer.add(geoObjects);

myMap.geoObjects.add(clusterer);

};

</script>

 

 

Нужно реализовать меню "групп" , как тут: http://dimik.github.io/ymaps/examples/group-menu/menu03.html (без дочерних, только родители)

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

Зачем каждый раз геокодировать одно и тоже?

Уже 100 раз писали что это плохо

Ну а как еще? смысл в том, что на сайте есть ресуры в которых есть адрес или метро. Нужно на карту вывести эти адреса/метро.  За это отвечает этот код, но он должен кластеризоваться. 

ymaps.geocode('Санкт-Петербург, [[+tv.coupon_adres:empty=`метро [[+tv.coupon_subway]]`]]', {results: 1 }).then(function (res) {

var firstGeoObject = res.geoObjects.get(0),

   coords = firstGeoObject.geometry.getCoordinates();

/* создаем метку */

 

var myPlacemark_[[+idx]] = new ymaps.Placemark(coords, {

balloonContent: '[[+introtext:default=`Хранение шин и дисков до R22 на срок до 8 месяцев в «Центральном шинном доме».`]]
Хочу купон!',

balloonContentHeader: '[[+pagetitle]]'

}, {

       preset: 'default#wifiIcon',

  hideIconOnBalloonOpen: false

    });

 

clusterer.add(myPlacemark_[[+idx]]);

});

 

Если есть более умное решение, буду благодарен

каждый вызов геокодера это http-запрос.

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

Не проще ли один раз прогеокодировать их на сервере и создавать метки по координатам без лишних запросов.