Клуб API Карт

hintLayout для hintContent

Azat Zagitov
30 июля 2015, 11:00

Добрый день. Помогите пожалуйста.

Необходимо добавить на карту 70+ объектов. Добавляю через objectManager, данные для карты берутся из json-файла. 

Я прописал шаблон для хинта, он работает, если я добавляю одну метку. Но если я передаю описание объектов в json, то не могу применить шаблон. Как нужно написать то? 

 

На карте заместа хинта получаю [object Object]. 

Вот пример из json-файла. 

{

    "type": "FeatureCollection",

    "features": [

        {

          "type": "Feature", 

          "id": 0, 

          "geometry": {

            "type": "Point", 

            "coordinates": [55.831903, 37.411961]

          }, 

          "properties": {

              "hintContent": {

                "a_face": "0",

                "a_name": "Azat",

                "a_sport": "Football",

                "a_city": "Ufa"

              }, 

              "hintLayout": "HintLayout"

          }

        }

    ]

}

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

добавить его в хранилище стилей

ymaps.option.presetStorage.add('mypreset', {

hintLayout: MyHintLayout

});

и в JSON описании использовать строковый ключ

"properties": { ... },

"options": {

"preset": "mypreset"

}

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

у меня вопрос собственно вот в этом:

properties": {

 "hintContent": {

  "a_face": "0",

  "a_name": "Azat",

  "a_sport": "Football",

  "a_city": "Ufa"

 }, 

}

эти параметры должны быть в хинте, а они до туда не доходят, и я не могу понять где лужа. 

Видимо ваш макет (который вы не приложили) ожидает propertties.hintContent как строку, а не объект.

Соберите пример на jsfiddle.net, тут не надо код постить

http://codepen.io/anon/pen/oXJgEG 

вот собрал пример. 

Это баг в АПИ его должны починить в следующей 30-й версии

Хорошо. 

точнее плохо, конечно. мне сейчас тогда через Placemark добавить все 70 меток? а потом как поправите - переделать. 

 

И еще вопрос: когда ожидать 30 версию?

Если у вас всего 70 меток вам точно не нужен ObjectManager

Используйте geoQuery с этим же json-ом, там должно все работать

Пример есть в песочнице

 

Вот полный код

ymaps.ready(init);

 

function init() {

  var myMap = new ymaps.Map("map", {

      center: [63.160232, 92.356094],

      zoom: 3,

      controls: ["zoomControl"], //убираем все элементы управления картой кроме управления масштабом

    });

    //шаблон для всплывающего окна (hint)

    var MyHintContentLayout = ymaps.templateLayoutFactory.createClass("" +

      "
" +

      "{{ properties.hintContent.a_name }}" +

      "{{ properties.hintContent.a_sport }}" +

      "{{ properties.a_city }}" +

      ""

    );

  //хранилище стилей

  ymaps.layout.storage.add('myhintlayout', MyHintContentLayout);

  

  var json = {

    "type": "FeatureCollection",

    "features": [

        {

          "type": "Feature", 

          "id": 0, 

          "geometry": {

            "type": "Point", 

            "coordinates": [63.160232, 92.356094]

          }, 

          "properties": {

            "hintContent": {

              "a_face": "0",

              "a_name": "Azat",

              "a_sport": "Football",

              "a_city": "Ufa"

            }

          },

          "options": {

            "preset": "islands#greenDotIcon",

            "hintContentLayout": "myhintlayout"

          }

        }

    ]

}

 

  var clusterer = ymaps.geoQuery(json).clusterize({

    gridSize: 32,

    preset: 'islands#greenClusterIcons'

  });

 

  myMap.geoObjects.add(clusterer);

}

Спасибо.

теперь бьюсь с изменением стиля метки. 

добавил в presetStorage стиль, в options указываю preset и ничего.

http://codepen.io/zagazat/pen/RPvMwz