Клуб API Карт

YMapsML + iconStyle применение шаблона иконки в xml

lt-master
10 мая 2016, 11:03

Добрый день.
Храню точки в xml формате, загружаю на сайт след. образом:

            <script src="//api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
            <script type="text/javascript">
            ymaps.ready(init);

            function init () 
            {
                var allMap = new ymaps.Map("map_office_adr",{center: [45.18501644, 41.71664333], zoom: 7, controls: ["smallMapDefaultSet"]});
                var clusterer =  ymaps.geoQuery(ymaps.geoXml.load("path_to_xml")).clusterize({preset: "islands#orangeClusterIcons", zoomMargin: 70});
                allMap.geoObjects.add(clusterer)    
            }
            </script>

   
в итоге данные отображаются, то не подтягивается шаблон из xml <iconStyle> для не кластеризованных точек и также дополнительный вопрос:
если точки имеют одинаковые координаты, то баллун имеет другой, не кастомный вид и название точек (clusterCaption) не отображается.
Подскажите пожалуйста как нужно скорректировать xml документ?
шаблон ниже:

<?xml version="1.0" encoding="utf-8"?>
<ym:ymaps xmlns:ym="http://maps.yandex.ru/ymaps/1.x">
<Representation xmlns="http://maps.yandex.ru/representation/1.x" xmlns:gml="http://www.opengis.net/gml" xmlns:repr="http://maps.yandex.ru/representation/1.x">

<Style gml:id="userobject">

	<iconStyle>
		<href>http://info.maps.yandex.net/api/i/steelblue/dot.png</href>
		<size x="26" y="46"/>
		<offset x="-22" y="-46"/>
	</iconStyle>
	
	<iconContentStyle>
		<template>#placemark</template>
	</iconContentStyle>

	<hintContentStyle>
		<template>#hintTemplate</template>
	</hintContentStyle>

	<balloonContentStyle>
		<template>#balloon</template>
	</balloonContentStyle>
	
</Style>

<Template gml:id="placemark">
	<text>$[metaDataProperty.AnyMetaData.number]</text>
</Template>

<Template gml:id="hintTemplate">
	<repr:text><![CDATA[<div>$[name]</div>]]></repr:text>
</Template>

<Template gml:id="balloon">
	<text><![CDATA[<div style="max-width:400px;*width:400px;">
				<b>$[name]</b>
				<div><i>$[description]</i></div>
				<br/>
				<div><b>Адрес: </b>$[metaDataProperty.AnyMetaData.adr]</div>
				</div>]]></text>
</Template>

</Representation>


<ym:GeoObjectCollection xmlns="http://www.opengis.net/gml">
<gml:name xmlns:gml="http://www.opengis.net/gml">Точки на карте</gml:name>
<featureMembers>

<ym:GeoObject>
<ym:style>#userobject</ym:style>
<metaDataProperty xmlns:gml="http://www.opengis.net/gml" xmlns:repr="http://maps.yandex.ru/representation/1.x">
<ym:AnyMetaData>
<ym:number>1</ym:number>
<ym:adr>строка адрес</ym:adr>
</ym:AnyMetaData>
</metaDataProperty>
<name>название</name>
<description>описание</description>
<Point>
<pos>53.280784, 158.209817</pos>
</Point>
</ym:GeoObject>

</featureMembers>
</ym:GeoObjectCollection>
</ym:ymaps>

2 комментария
Подписаться на комментарии к посту
Если добавить просто в myMap.geoObjects без geoQuery и кластеризации, то кастомные иконки отображаются?
dimik,
 нет, не отображаются: 

ymaps.geoXml.load("path_to_xml").then(function (res){
allMap.geoObjects.add(res.geoObjects);
}, function (error){
alert("При загрузке стилей произошла ошибка: " + error);
});