Доброго времени суток товарищи! :)
Пытаюсь найти решение следующей проблемы...у меня имеются метки на карте и кастомный балун для них.
При открытии балун может появится где-то за пределами карты, что не есть хорошо :(
Цель - при нажатии на балун центрировать карту по координатам метки + сделать "сдвиг" на определенное кол.-во пикселей О__О или же заставить работать balloonAutoPan.
Приглашаю знатоков для дискуссии =)
UPD - ссылку дать не могу, NDA....могу подробнее объяснить работу и показать части кода :)
И так, использую я yaml фаил с данными по объектам., все объекты добавляются в кластер и располагаются на карте.
Код для этих вещей весьма тривиальный и не самый красивый я полагаю:
// загружаем объекты
ymaps.geoXml.load('/yaml.xml').then(function (res) {
var arr = [];
res.geoObjects.each(function (obj) {
arr.push(obj);
});
cluster.add(arr);
myMap.geoObjects.add(cluster);
});
// шаблон контента для балуна
var ObjectBaloonContent = ymaps.templateLayoutFactory.createClass('', {
build: function (){
var parent = this.getParentElement();
var geoObject = this.getData().properties;
var content = '';
parent.innerHTML = content;
}
});
UPD 2 - проблема №2 - "назначение событий на отдельный placemark api Яндекс.карт 2.0", нашел в поиске тему по её решению но пример кода который там приведен не сработал....Необходимо добавить событие клик для всех меток на карте, для получения координат и центрирования карты со сдвигом :)
Задача решена!
myMap.geoObjects.events.add('click', function (e) {
var geoObject = e.get('target');
var projection = myMap.options.get('projection');
var position = geoObject.geometry.getCoordinates();
var position_global_px = myMap.converter.pageToGlo
var position_local_px = myMap.converter.globalToP
myMap.setGlobalPixelCenter([position_global_px[0] + position_local_px[0], position_global_px[1] + position_local_px[1]]);
}, this);
Как это работает я полностью и не знаю :)
Если есть что дополнить/поправить - wellcome!