Клуб API Карт

Свойства ymaps.Placemark

Пост в архиве.

Подскажите пожалуйста, в каких случаях свойства Placemark можно задавать произвольно, а в каких свойства ограничиваются стандартными:

  • iconContent - содержимое иконки геообъекта;
  • hintContent - содержимое всплывающей подсказки геообъекта;
  • balloonContent - содержимое балуна геообъекта;
  • balloonContentHeader - содержимое заголовка балуна геообъекта;
  • balloonContentBody - содержимое основой части балуна геообъекта;
  • balloonContentFooter - содержимое нижней части балуна геообъекта.

$.getJSON("points.php", function (json) {

    for (i = 0; i < json.markers.length; i++) {

        var myPlacemark = new ymaps.Placemark([json.markers[i].lat, json.markers[i].lon], {

            //Свойства

            balloonContentHeader: json.markers[i].name,

            balloonContentBody: json.markers[i].addresstext,

            balloonContentFooter: json.markers[i].id

        }, {

            // Опции

            preset: json.markers[i].styleplacemark

        });

    }

});

 

Как в данном случае сделать произвольные свойства? Например:

balloonContentHeader: json.markers[i].name,
balloonContentAddress: json.markers[i].addresstext,
balloonContentId: json.markers[i].id,

balloonContentContacts: json.markers[i].contacts

10 комментариев

Вы можете задавать произвольные поля в менеджер данных (параметр properties),

но выводиться в балуне или иконке метки они будут только в случае создания собственного макета, и указания их в шаблоне этого макета.

т.е. мне сначала надо создать шаблон метки, где указать необходимые мне свойства:

$[properties.name]
$[properties.address] и т.д.

и потом при выгрузке данных из базы и создании меток в опциях указать этот шаблон
правильно понял?
да, поля из объекта properties метки интерполируются в шаблон

с этим справился, спасибо!

подскажете еще  как правильно для моего примера установить границы показа карты, чтоб все объекты помещались?

Пробую myMap.setBounds(myCollection.getBounds( ) ) ; но как-то криво получается, часть точек остается "за кадром"

 

попробуй так:

myMap.setBounds(myMap.geoObjects.getBounds());

отображается так же (

вставляю сюда:

 

// Добавляем метку в коллекцию объектов   
                    myCollection.add(myPlacemark) ;       
                }
               
        // Добавляем коллекцию на карту       
        myMap.geoObjects.add(myCollection) ;
         myMap.setBounds(myMap.geoObjects.getBounds( ) ) ;
                } ) ;

 

 

может те метки, которые не видны, ты добавляешь уже после вызова setBounds?

не, вот функция целиком:

 

//Запрос данных и вывод маркеров на карту
        $.getJSON("vivodpointsmap.php",
        function(json){
                for (i = 0; i < json.markers.length; i++) {
           
                    var myPlacemark = new ymaps.Placemark ( [json.markers[i].lat, json.markers[i].lon],  {
                    // Свойства
                    name:         json.markers[i].name,
                    address:    json.markers[i].addresstext,
                    contacts:     json.markers[i].contacttext,
                    id:            json.markers[i].id
                             },  {
                    // Опции
                    preset: json.markers[i].styleplacemark,
                    balloonContentBodyLayout:     myBalloonContentBodyLayout,
                    balloonContentLayout: myBalloonContentLayout
                                } ) ;       
           
                  // Добавляем метку на карту
                myMap.geoObjects.add(myPlacemark) ;
       
            }
           
            } ) ;
//Конец Запрос данных

Он у тебя один?

И когда и где вызываеется setBounds?

Дай ссылку и скажи какие шаги воспроизвести, чтобы увидеть что setBounds

работает не так как надо

Вот ссылка http://dojust.ru/map/generalweb.html

Шаги никакие не надо производить, при загрузке карты нет масштабирования в пределах всех точек на карте