Клуб API Карт

Всплывающая подсказка на полигоне (многоугольник)

chus.slava
15 марта 2013, 19:35

рисую полигон на карте:

   myPolygon = new ymaps.Polygon(
        polygon,
        {   //Свойства
            hintContent: 'Имя',
            balloonContent: 'описание объекта',
            balloonContentHeader: ' заголовок обекта'
        },
        {    // Опции.
       
            fillColor: '#FF0000',         // Цвет заливки
            strokeColor: '#0000FF',     // Цвет границ
            opacity: 0.4,                 // Прозрачность (полупрозрачная заливка)
            strokeWidth: 3,             // Ширина линии
            strokeStyle: 'solid'         // Стиль линии
        }
    );

 

Размещаю на карте. Все великолепно, при наведении мышки всплывает подсказка, при клике всплывает окошко.

 

Загружаю xml полигонов: 

ymaps.geoXml
                    .load("/all.xml/")
                    .then(function (res) {
                                res_geoObjects=res.geoObjects;
                                myMap.geoObjects.add(res.geoObjects); // Добавление геообъектов на карту
                            }, function (error){   // Вызывается в случае неудачной загрузки YMapsML-файла
                                //alert('Ошибка: ' + error);
                            }
                    );

 

Размещаю на карте. Великолепно. размещается.

Но! при наведении на многоугольник (полигон) ничего не всплывает.

При щелчке - описание и заголовок

       <repr:Style gml:id="Style2">
            <repr:polygonStyle>
                <repr:strokeColor>009966FF</repr:strokeColor>
                <repr:fillColor>33CC667F</repr:fillColor>
                <repr:strokeWidth>1</repr:strokeWidth>
                <repr:outline>1</repr:outline>                <repr:fill>1</repr:fill>            </repr:polygonStyle>
        </repr:Style>

            <ymaps:GeoObject>

               <gml:name>Имя объекта</gml:name>
                <gml:description>Описание объекта</gml:description>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>30 45 31 45 31 46</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
                <ymaps:style>#Style2</ymaps:style>

            </ymaps:GeoObject>

 

Как быть, в какую сторону смотреть?

 

7 комментариев
Подписаться на комментарии к посту

2 варианта:

1. Указать шаблон и в нем поле из которого брать значение хинта

2. Переложить при получении YMapsML, значение одного из полей менеджера данных (properties) в поле "hintContent"

Первый способ неявный, но наверное, более правильный

второй способ

да... именно до этого я и "докатился"

.then(function (res) {
          res_geoObjects=res.geoObjects;
          res.geoObjects.each(function(geoO){
                     geoO.properties.set({'hintContent':geoO.properties.get('name')});
          });
         myMap.geoObjects.add(res.geoObjects); // Добавление геообъектов на карту
  }, function (error){  

            // Вызывается в случае неудачной загрузки YMapsML-файла
            }

 

Первый способ неявный, но наверное, более правильный

всё так.

Второй способ нормальный, если немного объектов.

Иначе ты теряешь время на переборе.

   
        
            
                009966FF
                33CC667F
                1
                1
                1
                
                    #hintTemplate
                
            
        
        
            
                996600FF
                FFCC667F
                1
                1
                1
                
                    #hintTemplate
                
            
        
   

    
            xt>
    

И в каком месте я не прав?

Или я что-то не так применяю?

судя по доке

не должен быть внутри ,

а должен быть внутри  

 

судя по доке 

 

не по той, а по этой

а потом по этой

<repr:Style gml:id="Style2"><repr:template>#hintTemplaterepr:template><repr:polygonStyle><repr:strokeColor>009966FFrepr:strokeColor><repr:fillColor>33CC667Frepr:fillColor><repr:strokeWidth>1repr:strokeWidth><repr:outline>1repr:outline><repr:fill>1repr:fill><repr:hintContentStyle>repr:hintContentStyle>repr:polygonStyle>repr:Style>

<repr:Template gml:id="hintTemplate"><repr:text>repr:text>repr:Template>


        Имя объекта
                Описание объекта
               
                   
                       
                            30 45 31 45 31 46
                       
                   
               
                #Style2

Вот так работает...
Огромное спасибо.

Как я понимаю в этом шаблоне мы задаем  только  шаблон, т.е формат вывода hintContent, но никак не сам hintContent

 

даже пробовал напрямую прописать

Имя объекта

естественно ничего не получилось, и не должно - нет такого свойства в gml.xsd


Если рассматривать сам шаблон
    
            xt>
    

и его стили

               
                    #hintTemplate
                

То ни где не сказано, что это относится к hintContent