Клуб API Карт

YMapsML и кластеризатор, не отображается содержимое меток

Пост в архиве.
sergio.sizow
15 июня 2012, 10:33

Добрый день всем, использую вот такой код для вывода меток

 

 <script type="text/javascript">
ymaps.ready(function()
{var map = new ymaps.Map("name_map", {center: [97.759643,59.269582], zoom: 3, type: "yandex#map"});

map.controls.add("zoomControl")

.add("mapTools")

.add(new ymaps.control.TypeSelector(["yandex#map", "yandex#satellite", "yandex#hybrid", "yandex#publicMap"]));

var clusterer = new ymaps.Clusterer();

ymaps.geoXml.load('url')
     .then(function (res) {

    res.geoObjects.each(function (geoObject) {

        clusterer.add(geoObject);

});

    map.geoObjects.add(clusterer);


})


});


</script>

 
При этом все в принципе нормально, метки отображаются, кластеризатор работает, но при клике на метку содержимое не отображает, что не так?

13 комментариев

Вы не могли бы дать ссылку на пример или загружаемый geoxml?

Вот кусок xml, рабочего, в нем два вида меток, одни синие, другие красные, если не использовать кластеризатор то все отлично, метки по цветам различаются, содержимое показывается, как только суешь их в кластеризатор, содержимое по клику на метке перестает отображаться. Сам пример на локалке но проверялся и на хостинге, результат одинаковый


http://maps.yandex.ru/ymaps/1.x"
       xmlns:repr="http://maps.yandex.ru/representation/1.x"
       xmlns:gml="http://www.opengis.net/gml"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maps.yandex.ru/schemas/ymaps/1.x/ymaps.xsd">
   
       
                
                #balloonTemplate
           
       
        
        
               
                #balloonTemplate
           
       
        
       
           
            
       
   
   
        #d
        
       
    

           
               
                   
                       ООО «Ромашка»
                       105005, г. Иваново, ул. Бауманская, д. 6
                       Иванов Сергей
                       (777) 332-25-81
                       ivanov@test.ru
                   
               
               
                    37.675289 55.776011
               
                
            
            
               
                   
                       ООО «Тестовый диллер»
                       404112, г.Новосибирск, ул.Ленина 45/1, офис 2-05
                       Петров Иван Иванович
                       (823) 21-03-53
                       test@gmail.com
                   
               
               
                    44.767902 48.808495
               
                
            
            
            
               
                   
                       Тестовый отдел
                       620034, г. Горький, ул. Хоца Намсараева, д. 7а, оф.406/1
                       Сидоров Иван
                       (21-12) 45-28-94, +7 920 177-66-55
                       test@mail.ru
                    
               
               
                    107.654784 51.822117
               
                default#redPoint
                
            
            
               
                   
                       Тестовый отдел 2
                       680009 г. Уфа, ул. Промышленная, д. 32е, каб. 27
                       Козлов Сергей
                       (44-11) 40-80-48
                       test@inbox.ru
                    
               
               
                    135.108598 48.495208
               
                default#redPoint
           
            
    
            
       
   



Балун на метке не открывается не потому, что она добавлена в кластеризатор, а потому что у нее нет нужных данных.

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

openEmptyBalloon = true.

хм, а куда собственно пропадают данные, если они заданы через xml файл?

поэтому меня и интересует, почему без кластеризатора данные открываются и балуны соответственно не пустые, а как только включаем кластеризатор данные пропадают...

Без кластеризатора балуны тоже не открываются. Я проверяла)

Объект балуна пытается построиться на основе специального макета. Макет по умолчанию понимает некоторый набор полей из данных. Если в этих полях нет данных, балун считает, что он пустой, и не показывается.

Для того, чтобы балуны начали показываться нужно либо поменять формат данных в geoXML, чтобы стандартный шаблон балуна находил нужные ему данные, либо сделать свой макет содержимого балуна, который будет обращаться к полям из geoXML.

Балуны открываются вот так, я проверял)

ymaps.geoXml.load('url')
     .then(function (res) {
         map.geoObjects.add(res.geoObjects);
     });

});

вот почему в таком виде он находит данные для шаблона балуна, а в вышеуказанном не находит, последний и главный вопрос

Я правильно понимаю, что стили для шаблона балуна задаются один раз для всей коллекции геообъектов?

правильно, стиль для шаблона балуна задан один раз в xml файле

 

и т.д.

а используется он потом в обоих стилях

и

Код, который описывает элемент коллекции


               
                   
                       Тестовый отдел
                       620034, г. Горький, ул. Хоца Намсараева, д. 7а, оф.406/1
                       Сидоров Иван
                       (21-12) 45-28-94, +7 920 177-66-55
                       test@mail.ru
                    
               
               
                    107.654784 51.822117
               
                default#redPoint
             


не содержит задание стиля для балуна. Только для самой метки. Стили отображения балуна заданы сразу для всей коллекции.


Как только метка добавляется в кластеризатор, она перестает быть элементом вашей коллеции и перестает наследовать стили балуна (собственные стили для нее не заданы). Нужно задавать для меток собственные стили, чтобы они применялись, даже когда метка в кластеризаторе.

все, благодаря Вам проблему победили, Спасибо!

осталось только одно уточнение, большинство меток должны быть стандартные, но некоторые хотелось бы зеленые, как прописать

чтобы он использовал twirl#greenIcon в качестве иконки,
это ссылка на файл, а пути к этой иконке не нахожу

 

просто укажите родительским стилем twirl#greenIcon

 


                
                #balloonTemplate
           

           twirl#greenIcone>
       

У вас задан шаблон содержимого балуна (balloonTemplate), но он не используется (у меток стиль default#redPoint
Проблема, вероятно, именно в этом.

стиль меток поправил, спасибо, но не помогло