Клуб API Карт

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

Здравствуйте!

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

Раньше я передавал в параметер ?onload имя коллбэк-функции, которая производит всю необходимую работу по инициализации карты.

Теперь всегда возникает ошибка: modules.define is not a function (http://dl3.joxi.net/drive/0009/1055/594975/151215/fe904c00b2.jpg). 

Если я подключаю API без коллбэка и затем вручную инициализирую функцию, то все работает, как и должно.

Дайте ссылку на страницу, пожалуйста.

Вот, демо-страница для примера: http://laptop-store.loginov.biz/04_laptop_store_contacts.html

Насколько я вижу, callback-функция определяется по коду ниже подключения API. Перенесите подключение API ниже подключения скрипта http://laptop-store.loginov.biz/plain/js/maps.js

Подключение скрипта в данном случае происходит асинхронно по window.onload: 

var ym = document.createElement('script');

ym.type = 'text/javascript';
ym.src = 'https://api-maps.yandex.ru/2.1/?load=package.full&lang=ru-RU&onload=YandexMaps.init';
ym.async = true;
document.body.appendChild(ym);

http://dl3.joxi.net/drive/0009/1055/594975/151215/503db9d77d.jpg (API подключается в конце документа)

Поэтому сама функция на момент загрузки уже точно есть в обалсти видимости.

 

Разбираемся.
Подключите пока версию 2.1.31

Большое спасибо за обратную связь. 
Перешел пока что на предыдущую версию. 

Доброго времени суток!
Не удалось ли выяснить причину ошибки? 

Выяснили. Починим в следующем релизе.

После переключения на 2.1.34 перестали работать некоторые функции. Пример здесь - http://tochka-na-karte.ru/modules/travel/map.php?id=338#map . Если открыть один балун по клику на метку или в списке справа, то его уже невозможно закрыть. Соответственно нельзя открыть никакой другой балун. В консоли ошибка: combine.js?load=6T!(!)!q1H6V!j6W0r601K610u6563!Q*fq5QlQnQbQdQcQ2QeQfQgQYQ4Q7Q$Q0Q5Q8Q-Q3q-Q1Q6Q9Q_Q…:144 Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.

 

До вчерашенго дня всё работало нормально. Вновь появившейся ошибки в коде быть не может, так как здесь в подобном скрипте то же самое и также раньше работало - http://webmap-blog.ru/examples/spravoshniknew/index.html . Не могли бы пояснить отличия в работе?

В вашем коде макета есть вот такая строка:

build: function(){this.constructor.superclass.build.call(this);this._element=$('.map-mark',this.getParentElement())

Переопределять внутренние недокументированные свойства, ещё и обратно несовместимым образом — очень, очень плохая идея.

Почему тогда раньше работало, если это плохая идея?) Как исправить?

> Почему тогда раньше работало, если это плохая идея?

Вам везло ;) Как только мы что-то поменяли во внутренней логике, оно и сломалось.

> Как исправить?

Предположительно, переименование поля (из this._element, скажем, в this.$element) должно помочь, насколько я вижу по коду.

Блин, вы крут. Работает, спасибо.

У меня похожая ситуация, только у меня вообще ничего не отображается на карте: ругается на эту строчку:  myMap.geoObjects.add(geoObjects);

Uncaught TypeError: t.getParent is not a function

сваливается ошибка в консоли:

ym.modules.define("component.array.ParentArray",["util.defineClass","component.array.BaseArray","component.parent.BaseParent"],function(t,e,n,a){function r(t,e,r,o,s){t=t||[],this._callbacks=r||{},this._parent=e,this._parentEvents=o,this._parentOptions=s,this._parentComponent=new a(e,{callback:this._childParentChangeCallback,context:this});for(var i=0,c=t.length;c>i;i++)this._parentComponent.addChild(t[i]);this._baseArrayComponent=new n(t,{onAdd:{callback:this._addCallback,context:this},onRemove:{callback:this._removeCallback,context:this},onSet:{callback:this._setCallback,context:this}})}e(r,{get:function(t){return this._baseArrayComponent.get(t)},set:function(t,e){return this._parent==e.getParent()&&this._baseArrayComponent.remove(e),this._baseArrayComponent.set(t,e)},add:function(t,e){this._parent==t.getParent()&&this._baseArrayComponent.remove(t),this._baseArrayComponent.add(t,e)},remove:function(t){this._baseArrayComponent.remove(t)},removeAll:function(){this._baseArrayComponent.removeAll()},splice:function(t,e){for(var n=Array.prototype.slice.call(arguments,2),a=0,r=n.length;r>a;a++){var o=n[a];this._parent==o.getParent()&&this._baseArrayComponent.remove(o)}return this._baseArrayComponent.splice.apply(this._baseArrayComponent,arguments)},getLength:function(){return this._baseArrayComponent.getLength()},getIterator:function(){return this._baseArrayComponent.getIterator()},each:function(t,e){this._baseArrayComponent.each(t,e)},indexOf:function(t){return this._baseArrayComponent.indexOf(t)},sort:function(t){this._baseArrayComponent.sort(t)},quickSort:function(t){this._baseArrayComponent.quickSort(t)},toArray:function(){return this._baseArrayComponent.toArray()},_addCallback:function(t,e){this._parentComponent.addChild(e);var n=this._callbacks.onAdd;n&&n.callback.call(n.context,t,e)},_removeCallback:function(t,e){this._parentComponent.removeChild(e);var n=this._callbacks.onRemove;n&&n.callback.call(n.context,t,e)},_setCallback:function(t,e,n){this._parentComponent.removeChild(e),this._parentComponent.addChild(n);var a=this._callbacks.onSet;a&&a.callback.call(a.context,t,e,n)},_childParentChangeCallback:function(t,e,n){this._parent==e&&(t.events.setParent(null),t.options.setParent(null),-1!=this._baseArrayComponent.indexOf(t)&&this._baseArrayComponent.remove(t)),this._parent==n&&(t.events.setParent(this._parentEvents||this._parent.events),t.options.setParent(this._parentOptions||this._parent.options))}}),t(r)});}],['85', function (ym) {

https://api-maps.yandex.ru/2.1.34/combine.js?load=1,2d0c8A0gqG1T(38C1V1X12(4(0148D(1181$8H1_1(5l906R6X0a0e8R1j8L8M8V8W8Y2b8O1Z8T0p0l2k828485878$898_2r8.2t(6(7(9($8!8(2v2A2C2I2L2N2S628j8q8z2U8J8Z9a9c9g8)2W21239h250i9l9i292-2.2)(((_(*(.(,(j2q2z2J3a3e9n9m3g1k1m6Q3x6-3i3l9p3p3y3B9r3D)d)i)e3H)l3K9u)m(J)b3M)n3T9x)p3V0d3$3032369y380y0H0M9*9(9q9,9z9Q9J$u$a$b$d$e)L)N)O$h$k$g$l)R)S)T)V)W$n)Y)0)2$o$pj7j8j9j$$s$t$w$x$F$G$I$K$M$N$A$B$D)3$2$W$R)5)7$S$T$V3z9A9C9D9F9G3,9I9K9L9N9P9R9U9V9X9Y3.4b4e4h4k4n)r)s)u979S3Z0D4p)v)w)y)A)C)D4r4t4v0R34$J0X02054Y-14042,F,G-2-4-5-7-8-$4344---.4648494-4_4!4(4)1-912B-d08-!-*0n4j4J-)-,-q-z-Q-Z4q_a5c5f5h5m5a_n_o,H.t_u_y5o_H_M0-.G.T3t.0_V,I_X_Y_1_2_S_U_3_55r_6_8_95s5u5w_$___.,L,K,Mze_*0s5x5A5C5D_(_)_q,N5F5G,O,P,R,S,T,U,V,W,X,Y,0,1,2,3,4,5_j0B0F5I0(5M5K0q5O0z5P0Jqm_zqn,_,),,qeqfqgqhqiqkqlqpqrqsqtqu_ZqvqwqxqyqAqB,!,(,q.l.m.c.o5T_J5W.k.p.s.4.vqCqEqDqF50.xqIqKqHqO.D.E.F.H.I.K.M.N.PqPqR.S.U.V52.AqLqM53.BqN.R5557.X.Y585$5-5!q3!0!E!H.7!2!3!40K5*!75(5,.(923v.J!b6v6g93946i6l6m6o6r5q5z5Q5J6a6c6d2m961y1u1w.w1D6A1F!_6I!.!*6K6M6O6P6S&callback_prefix=ymaps_loader
Покажите страницу с проблемой, пожалуйста.

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

В слоях карты пропала народная карта. Если переключиться на релиз 2.1.31 то она в слоях снова есть. Как можно исправить это?

Здравствуйте!
Это плановые изменения, которые мы анонсировали ранее. 
Вы можете ознакомиться с подробностями по ссылке

Наблюдаются трудности с доступом, уже более получаса..https://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU

Нормализовалось.

Спасибо за ответ. Однако в базовом слое нет большинства объектов с НК. Это же вообще неудобно теперь... Пользователи пишут письма с вопросами, куда пропал слой НК.