Клуб API Карт

objManager и контент

Пост в архиве.
DGray2006
10 сентября 2009, 16:16

Добрый день.


При добавлении с помощью objManager меток на карту, не как не могу понять как задать Имя метки и коментарии к ней.



var objManager = new YMaps.ObjectManager();
map.addOverlay(objManager);

objManager.add(getPoints(), 12, 17);
objManager.add(getSh(), 1, 11);




function getPoints (){
var arrPoints = [];
var bounds = map.getBounds(),
pointLb = bounds.getLeftBottom(),
span = bounds.getSpan();

<?php for ($i = 0; $i < count($f); $i++) { ?>
point = new YMaps.GeoPoint(<?php echo $GPx[$i];?>,<?php echo $GPy[$i];?>);
<?php if ( $Wrk[$i] == "В эфире") { ?>
arrPoints.push(new YMaps.Placemark(point, {style:"sg#lbmPoint", balloonOptions: {maxWidth: 300}}));
<?php } else if ( $Wrk[$i] == "Интеграция") { ?>
arrPoints.push(new YMaps.Placemark(point, {style:"sy#lbmPoint", balloonOptions: {maxWidth: 300}}));
<?php } else {?> arrPoints.push(new YMaps.Placemark(point, {style:"grey#lbmPoint", balloonOptions: {maxWidth: 300}}));
<?php }?>

<?php }?>

return arrPoints;
}



function getSh (){
var arrPoints = [];
var bounds = map.getBounds(),
pointLb = bounds.getLeftBottom(),
span = bounds.getSpan();

<?php for ($i = 0; $i < count($f); $i++) { ?>
point = new YMaps.GeoPoint(<?php echo $GPx[$i];?>,<?php echo $GPy[$i];?>);
<?php if ( $Wrk[$i] == "В эфире") { ?>
arrPoints.push(new YMaps.Placemark(point, {style:"sh#lbmPoint", balloonOptions: {maxWidth: 300}}));
<?php } else {?> arrPoints.push(new YMaps.Placemark(point, {style:"shg#lbmPoint", balloonOptions: {maxWidth: 300}}));
<?php }?>
<?php }?>
return arrPoints;
}


Напишите пожалуйста пример, как добавлять разные слои меток (содержащие Имя, Коментарий) в зависимости от зума.


6 комментариев
 
// Создали диспетчер объектов и добавили его на карту
var objManager = new YMaps.ObjectManager();
map.addOverlay(objManager);

// Создаем метку
var placemark = new YMaps.Placemark(new YMaps.GeoPoint(35, 55));
placemark.name = "имя метки";
placemark.description = "описание метки";

objManager.add(placemark, 12, 17);

вот как к этому прикрутить name и description

arrPoints.push(new YMaps.Placemark(point, {style:sKey}));


тут же в массив уходят данный, не понятно как к ним добавить :(


По аналогии. Лучше сделать для таких целей отдельную функцию.

arrPoints.push(new YMaps.Placemark(point, "имя метки", "описание метки" {style:sKey}));

// Функция по созданию метки
function createPlacemark (point, name, desciption, style) {
    var placemark = new YMaps.Placemark(point, {style: style});
    placemark.name = name;
    placemark.description = description;
    return placemark;
}

 

arrPoints.push(new YMaps.Placemark(point, "имя метки", "описание метки" {style:sKey}));
Если сделать так, то вместо нужных мне картинок на карте появятся Балуны, но Имени и Описания внутри не будет. Через эту строчку сопособ дополнения имени и описания, картинки которую я добавляю на карту был бы превосходен.


 

// Функция по созданию метки
function createPlacemark (point, name, desciption, style) {
var placemark = new YMaps.Placemark(point, {style: style});
placemark.name = name;
placemark.description = description;
return placemark;
}

Не могу понять как использывать эту функцию вместе с objManager, так то понятно в обычном случае ставишь ее и у тебя пошла работа


Вот пример предоставленный разработчиками:

window.onload = function () {
   map = new YMaps.Map(document.getElementById("YMapsID"));
   map.setCenter(new YMaps.GeoPoint(37.615, 55.75), 10);

   map.addControl(new YMaps.Zoom());

   var objManager = new YMaps.ObjectManager();
   map.addOverlay(objManager);

   objManager.add(getPoints(5, "default#whitePoint" ), 1, 5);
   objManager.add(getPoints(50, "default#redPoint" ), 6, 10);

    };

   function getPoints(count, sKey)      {
   var arrPoints = [];
   var bounds = map.getBounds(),
   pointLb = bounds.getLeftBottom(),
   span = bounds.getSpan();

   for (var i = 0; i < count; i++) {
         var point = new YMaps.GeoPoint(pointLb.getLng() + span.x * Math.random(),
         pointLb.getLat() + span.y * Math.random());
         arrPoints.push(new YMaps.Placemark(point, {style:sKey}));
                                        }
return arrPoints;
                                                       }

Если не сложно, можно показать на примере, как и где вставить ваш код что б все правильно работало, и при клике на картинке появлялся текст. Прошу прощения если вопрос легкий, но мне правдо не понять систему реализации.

 


Извините, ошибся.
arrPoints.push(createPlacemark(new YMaps.GeoPoint(35, 55), "имя метки", "описание метки", "default#redPoint"));
Функция createPlacemark - создает метку. Она принимает параметры: геоточка, имя и описание метки, а также стиль метки.

Если Вы хотите использовать свои стили, то предварительно Вам необходимо их создать. О создании собственных стилей написано в Руководстве разработчика.

Можно в диспетчер объектов добавить сразу метку:
objManager.add(createPlacemark(new YMaps.GeoPoint(35, 55), "имя метки", "описание метки", "default#redPoint"), 5, 10);

Эта запись аналогична вот этому:
var placemark = new YMaps.Placemark(new YMaps.GeoPoint(35, 55), {style: "deefault#redPoint"});
placemark.name = "имя метки";
placemark.description = "описание метки";
objManager.add(placemark, 5, 10);
Выбирайте способ, который для Вас удобнее.
Александр, благадарю помогло.