Клуб API Карт

не работает template для YMAPML

mybiz.pl
8 апреля 2010, 18:13

Пытаюсь задать стиль для объекта-оверлея через <Temlate></Template>.

Вот код:

 

<ymaps>
<Representation>
<Style gml:id="rubricStyle">
<iconStyle>
<size x="30" y="30"/>
<offset x="-11" y="-28"/>
<template>#userIconTemplate</template>
<href>y_icons/house.png</href>
</iconStyle>
</Style>
<Template gml:id="userIconTemplate">
<text>
       <div><img src="$[style.iconStyle.href]" />Тест</div>
</text>
</Template>
</Representation>
<GeoObjectCollection>
<gml:featureMembers>
<GeoObject gml:id="56941">
<gml:name>3</gml:name>
<style>#rubricStyle</style>
<gml:Point>
<gml:pos>34.512159 49.564857</gml:pos>
</gml:Point>
</GeoObject>
</gml:featureMembers>
</GeoObjectCollection>
</ymaps>

 

При выводе отображается только текст внутри <div>, а src у картинки как будто бы нет. При чем если вывести $[style.iconStyle.href] как текст, то отображается правильно.

Кто нибудь знает, может это глюк Яндекс? Сайт построен на YMapML и вывод иконок принципиально важен.

8 комментариев
Подписаться на комментарии к посту
В пути нужно обязательно указать протокол, т. е.


       http://$[style.iconStyle.href]" />Тест

Соответственно ссылка на значок тоже изменится:
Но тогда ссылка получается http://http://mysite.ru/y_icons/house.png и естественно не работает :( Пробовал все различные варианты. Брал пример от сюда http://api.yandex.ru/maps/ymapsml/doc/ref/reference/text.xml Не могли бы вы сбросить рабочий пример ибо очень похоже на глюк Яндекс.
Протокол в теге href не надо указывать, а mysite.ru нужно заменить на имя вашего домена.
Вот мой код на PHP:
print('http://maps.yandex.ru/representation/1.x">');
print('');
print('
           
        ');
print('');
В теге href протокол не указываю. Иконка house.png в текущей папке. Если прописывать ссылку на иконку в ручную - картика отображается. Если для картинки указать через style  width и height как $[style.iconStyle.size.x] и $[style.iconStyle.size.y], то эти параметры так же не воспринимаются. По поводу добавления  http:// в темплейте перед иконкой приводит к дублированию http://. Пробовал с добавлением и без - результат одинаковый. Картинка не выводится. Такое впечатление, что стиль не воспринимается шаблоном. При этом, если макросы вывести как текст - они прекрасно выводятся на экран.
Расскажите какую задачу вы решаете, т. е. что в итоге вы хотите получить. Я помогу вам составить шабон.
Нужно вывести на карту значки домов и наложить на картинку значка номер дома. Пробовали сделать шаблоны на Javascript - все работает, но объектов много и хочется сделать это на YMapML.
В шаблонах YMapML есть ряд ограничений, которые действуют при написании своих собственных шаблонов. Например, нельзя использовать в стиле position:absolute, также нельзя использовать переменные в атрибуте style и пр.


Вы можете задать все объекты в YMapsML, а шаблон присвоить им в javascript. В JavaScript никаких ограничений нет.

var ml = new YMapsML("адрес до YMapML-документа");


// Обработчик загрузки YMapsML
YMaps.Events.observe(ml, ml.Events.Load, function (ml) {
    ml.setStyle("example#customPoint");
});



Пример стиля взят из следующего примера: 
http://api.yandex.ru/maps/jsapi/examples/markerscustomtemplate.html