Клуб API Карт

Ошибка при открытии балуна Placemark

Пост в архиве.
KDV
28 декабря 2012, 12:39
Имеется глобальный массив меток, который создается при открытии страницы:

http://api-maps.yandex.ru/2.0/?load=package.standard,package.clusters&lang=ru-RU

var PM[id] = new ymaps.Placemark(...);

Далее по рез-тату действия пользователя(гораздо позже создания меток и добавления их на карту) требуется отрыть балун, выполнив:

PM[id].balloon.open();

Но в итоге получаем ошибку:

Ошибка: TypeError: this._Ih.getMap(...) is null
Источник: http://api-maps.yandex.ru/2.0.21/release/combine.xml?modules=....&jsonp_prefix=ymaps2_0_21

Почитав похожие темы в клубе, уже обещали пофиксить давно данную ошибку, а воз и ныне там.
9 комментариев
Скорее всего, вы неправильно используете замыкания в JavaScript. И API тут ни при чем.

Это догадка, а не руководство к действию)

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

Особенно учитывая нерегулярный характер проблемы.

Вы же человек близкий к разработке и понимаете, что подключив дебаг версию и прикрепив дамп, отдаваемый дебаг версией, вы, кроме того, что сами сможете посмотреть где именно вызывается ошибка и почему, но и дать более полную информацию для отладки, тем самым ускорить исправление ошибки. Вам же это нужно?)

Если есть возможность — разместите где-нибудь пример с фейлом. Или скажи что именно нужно сделать, детальное описание контекста часто сильно помогает.

btw. Ошибка: TypeError: this._Ih.getMap(...) is null намекает, что метка не добавлена на карту.

 Для начала детальнее описание ошибки в Opera 12.12 (в IE8 и ФФ17 проблемы нет) x86

Event thread: readystatechange
Uncaught exception: TypeError: Cannot convert 'this._Ih.getMap()' to object
Error thrown at line 1, column 489908 in (e) in http://api-maps.yandex.ru/2.0.21/release/combine.xml?modules=...&jsonp_prefix=ymaps2_0_21:
this._Ih.getMap().balloon.capture(n.util.bind(function(t,n){t||(this._Qb=n,n.options.setParent(this._Ih.options)),e(t,n)},this),{geometry:this._Ih.geometry,properties:this._Ih.properties,state:this._Ih.state,geoObject:this._Ih},{projection:n.projection.idle})
called from line 1, column 488944 in (e) in http://api-maps.yandex.ru/2.0.21/release/combine.xml?modules=...&jsonp_prefix=ymaps2_0_21:
return this.capture(n.util.bind(function(t,r){if(!t){this._Rb=r.events.group().add("open",s,this).add("close",o,this).add("destroy",u,this);var i=this._Ih.options.get("balloonDataSource");if(i)i(this._Ih,n.util.bind(c,this),e);else{var a=this._Vb=this.calculatePixelPosition(e||this._Ih.getMap().getGlobalPixelCenter());a&&r.open(a)}}},this)),this._Qb||null
called from line 173, column 15 in ShowPMInfo():
PM[id].balloon.open();
 

ShowPMInfo() - моя функция заполнения текста балуна и его открытия после AJAX, в часности:

if(PM[id]) {
       PM[id].properties.set('balloonContentBody', txt); // ошибок не вызывает
       if(id==1) PM[id].balloon.open(); }   // строка 173 вызывающая ошибку
И да, можно уточнить, о каких именно похожих темах идет речь?
поиск по клубу balloon.open

http://my.ya.ru/search_posts.xml?journal=http://clubs.ya.ru/mapsapi/&server=ya.ru&search_type=club_posts&text=balloon.open так?)

Приложите, ради бога, пару ссылок на конкретные комменты/треды, разве это сложно? Говоря о сферическом коне мы придем к размышлениям, даже говоря о нём конретно. Но вам нужно решение, а не разговоры. ;-)

приложите ссылку на страницу