Клуб API Карт

Подскажите как быть

CRAMAC
29 мая 2010, 12:29

Всем привет. Делаю карту с динамическим наложением меток через

 

 

YMaps.Events.observe(map, [map.Events.BoundsChange, map.Events.TypeChange],  function () {

....

 

    var gCollection = new YMaps.GeoObjectCollection();

....

    map.addOverlay(gCollection);

 

    });

 

 перед выдачей меток, вс с карты убирается с помощью 

map.removeAllOverlays();

при этом есть еще отображение балуна по клику с помощью

 

 

YMaps.Events.observe(map, map.Events.Click, function (map, mEvent) {

....

    map.openBalloon(mEvent.getGeoPoint(), myHtml);

    });

 получается так что если кликнуть в край карты, балун не умещается на ней, карта смещается и балун стирается вместе с метками (т.к. при смещении они перестраиваются). Можно ли сделать так что бы удалялось не все, а только метки а балун оставался?

10 комментариев
Подписаться на комментарии к посту
Azat Razetdinov
29 мая 2010, 14:36
map.removeOverlay(gCollection);
Спасибо, вроде проверял такой способ не работало, сейчас все норм.
нашел из за чего у меня не работало, надо было переменную gCollection вынести за пределы метода

Частично помогает данный способ, но удаляет только последние метки добавленные в группу


т.е. сейчас в группу так набиваются метки:


 


 


 


 




 


var gCollection;


function Agetmetca(param)


{


map.removeOverlay(gCollection);


...


gCollection = new YMaps.GeoObjectCollection();


 


 


for(var i = 0; i < arr_x.length; i++)


{


  .....


gCollection.add(placemark);


}


....


}


 




как это обойти?


 


 

А можете дать ссылку на страницу?

http://avto-gids.ru/maps2.php


если передвинуть не выводя метки из зоны видимости, то они все удаляются, а если отодвинуть за зону их всех, стираются только последние...а некоторые остаются (если вернуть обратно в зону видимости и не отпуская мышь)

Вынесите создания метки в отдельную функцию:


for(var i = 0; i < arr_x.length; i++) {
    gCollection.add(createPlacemark(arr_x[i], arr_y[i], arr_tip[i], arr_name[i], arr_descr[i]);
}

function createPlacemark(lng, lat, style, name, descriptions) {
    var placemark = new YMaps.Placemark(new YMaps.GeoPoint(lng, lat), {style :style});
    placemark1.name = name;
    placemark1.description = description;
   
    return placemark;
}

Вынес, только это не изменило положения...Так же и осталось.

Простите великодушно, мой косяк был при выборе меток. Все хорошо удаляется.

А если сделать вот так:


$.ajax({
type: 'GET',
url: "http://avto-gids.ru/maps2.php",
async   : false,
data: data,
dataType: "script",
success : function () {
    for(var i = 0; i < arr_x.length; i++) {
        gCollection.add(createPlacemark(arr_x[i], arr_y[i], arr_tip[i], arr_name[i], arr_descr[i]));
    }
}});