Клуб API Карт

перемещать метки при сдвиге карты

Пост в архиве.
beloff1985
8 ноября 2012, 13:56

Добрый день.

 

У меня есть 2 метки на карте. Их можно перетаскивать! Однако, часто приходится перемещать карту для того, что бы выставить эти метки, туда, куда надо. Но при перемещении карты  метки уходят за пределы видимости. 

Скажите, есть ли вариант, когда при перемещении карты, метки цеплялись к краю видимой области карты и не уходили в невидимую область?

3 комментария

может мой вариант не очень хорош будет но всеже. Попробуйте слушать событие tick и узнавая центр карты при этом смещать в центр метки.

что-то типа этого, не факт что работает)

.add('tick', function (e) {
var center=myMap.getCenter();
myPl.geometry.setCoordinates(center); // Перемещаем метку в заданые координаты
 })

 

запоминаете текущие координаты центра карты var coord = map.getCenter();, на событие boundschange вещаете обработчик который каждую метку сдвинет на newcoord[0]-coord[0],newcoord[1]-coord[1] где  newcoord это новые координаты центра карты

т.е. var coord = map.getCenter();

map.events.add('boundschange',function(){

  var newcoord =   map.getCenter(),prir = [ newcoord[0]-coord[0],newcoord[1]-coord[1] ];

  map.geoObjects.each(function(obj){

       var mycoord = obj.geometry.getCoordinates(); 

        obj.geometry.setCoordinates([ mycoord[0]+prir[0], mycoord[1]+prir[1]  ]);

  });

 coord = newcoord;  

})

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

Спасибо попробую реализовать....