Клуб 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
Проблема, вероятно, именно в этом.

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