Клуб API Карт

Перемещаются метки при работе с пиксельными координатами

Пост в архиве.
an-d-r-ej
20 ноября 2012, 16:28

 

Есть метка с openBalloonOnClick: false,

 

Была задача при клике по ней передвинуть ее на 100 пикселов ниже центра контейнера карты на любом зуме.

 

map.geoObjects.events.add(['click'],function (e) {

var SS = e.get('target').getOverlay().getGeometry().getBounds();

SS[0][1]-= 100;

map.setGlobalPixelCenter(SS[0],map.getZoom(),{duration: 1000});

});

 

При обработке события метка переползает - на 100 пикселов вверх по карте.

(только та, по которой был клик)

(я бы сказал она - занимает место в центре видимой области карты)

 

Аналогичная ситуация с:

 

map.geoObjects.events.add(['click'],function (e) {

var SS = e.get('target').getOverlay().getGeometry().getBounds();

SS[0][1]-= 100;

var projection = map.options.get('projection');

var SS2 = projection.fromGlobalPixels(SS[0], map.getZoom());

map.setCenter(SS2,map.getZoom(),{duration: 1000});

});

 

Помогла - только переустановка метки:

 

map.geoObjects.events.add(['click'],function (e) {

var SS = e.get('target').getOverlay().getGeometry().getBounds();

SS[0][1]-= 100;

var projection = map.options.get('projection');

var SS2 = projection.fromGlobalPixels(SS[0], map.getZoom());

map.geoObjects.remove(e.get('target'));

map.geoObjects.add(e.get('target'));

map.setCenter(SS2,map.getZoom(),{duration: 1000});

});

 

Задача была взята с потолка. (в рамкаж изучения новой версии карт).

Но - абсолютно уверен, что косяк какой то тут...

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

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

Да, в качестве первой точки bounds возвращается внутренний массив координат геометрии. Надо добавить slice. Исправим в след. версии.

Спасибо за информацию.