Клуб API Карт

Placemark's domElement accessor(v 2.1.(14|15|*))

evgeny.vityuk
12 сентября 2014, 14:00

Возможно ли получить доступ к родительскому dom element'у плейсмарка?

Такой подход не работает:

var p = getSomehowPlacemarkOnMap();

p.getOverlay().getElement() //метода getElement у оверлея нету

 

Судя по вот этой документации - http://api.yandex.ru/maps/doc/jsapi/2.0/ref/reference/overlay.html.Placemark.xml -  догадываюсь, что оверлей должен быть такой.

Вопрос:

-документация устарела или нужно по другому доставать оверлей?


Примечание:

в плейсмарках и их балунах используются кастомный лейауты.

 

Я понимаю, что референсить дом елементы нехорошо с точки зрение апи и что структура дома может изменяться от версии к версии, но для реализации задачи нужно получиться доступ к вот этому элементу - http://cropme.ru/44d6636f32d93b02af685527329604e5

18 комментариев
Подписаться на комментарии к посту

А можете описать задачу подробнее? Зачем нужно получать доступ к дом-элементу с картинкой?

нужно добавить цсс класс на тот элемент, на который бэкграунд картинка с опций презета добавляется. 

Знаю, что есть другие варианты реализации задачи, но в данном случае проще всего получить доступ к данному элементу

А вот такое валидное с точки зрения архитектуры решение не подойдет?

    Примеры. Задание собственного изображения для метки

   

   

Да, это один из вариантов решения. но хотелось бы просто достучаться к элементу, так как на него уже завязаны иконки картинки плейсмарка - 

{

   iconImageHref: 'examples/maps/ru/icon_customImage/images/myIcon.gif',

   iconImageSize: [30, 42],

   iconImageOffset: [-3, -42]

}

типа похожим образом

в общем очень нужно получить доступ к этому елементу. есть какие-то возможные документированные/недокументированные способы?

копался в исходниках немного времени и ничего не нашлось подходящего...

Нужно явно задать оверлей overlay.html.Placemark для метки (потому что по умолчанию выбирается не html-оверлей, а html-ный или канвасный, в зависимости от браузера).

И тогда через промис можно получить ссылку на оверлей и на его дом-элемент

    Примеры. Задание собственного изображения для метки

   

   

спасибо, это более подходит.

а можно как-то получить доступ напрямую к вот этому элементу:

http://cropme.ru/0cc1dff72c82e67403de190231846008

 

ПС: дико извиняюсь за столь яркий вынос мозга в пятницу)

ну дальше оперируйте dom

проблема в том, что этот дом разный в разных версиях апи. есть какая-то прямая ссылка именно на этот элемент используя апи?

нет, мы не поддерживаем обратную совместимость в структуре дом-дерева, так что этот элемент может вообще пропасть в будущих версиях. Соотвественно и каких-то явных ссылок на него нет

ок. спасибо за помощь!

пожалуйста

кстати вы не вкурсе почему SPA приложение может не работать после обновления с 2.1.11 на 2.1.15 в ие9 под вин7? UI в браузере просто виснет если заходишь на страничку с картой, но возможно есть проблемы в логике приложения)

Давно хотел уточнить ньансы связанные с использованием в spa приложениях, так как нигде не нашел ответов:
-карта дестроится синхронно после вызова map.destroy()?

Дайте ссылку на страницу, где воспроизводится проблема.

Карта дестроится синхронно

к сожалению могу показать только такой пример -  http://jsfiddle.net/aaand1/3vyt7kd2/12/ - который очень приближен к реальному(из-за нехватки времени не могу заставить, чтобы все работало - но тут в ие9 все работает). 

Так что по поводу доступа к элементу?

ответила выше

овтетил выше)

Этот пример корректно работает в ие9, нужен стенд, на котором воспроизводится баг