Клуб API Карт

"Maximum call stack size exceeded" при добавлении объектов

Пост в архиве.
usersideorgua
13 июня 2013, 17:08

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

Добавляю 1000 объектов на карту.

Через

"

new ymaps.Polygon....

poly_group.add(polygon_....);

..."


И потом добавляю группу на карту

"mymap.geoObjects.add(poly_group);"


В итоге - когда 850 объектов - тогда все нормально отрисовывает и работает скролл карты, перемещение.

 

Когда объектов больше - то карта уже не двигается и не скроллится, а в консоли пишет ошибку:


Uncaught RangeError: Maximum call stack size exceeded


Что посоветуете?

Спасибо.

19 комментариев

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

Эмм....

Может идеологически и неверно, но 

 

В гугл.картах - нормально все работает.


И сейчас - если я переделываю код  -чтобы объекты сами по себе грузились на карту, а не через объединение в группу. Т.е.

 

"mymap.geoObjects.add(polygon_n.....)"

 

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

Можете дать ссылку на страницу?

В тех же гугл.картах при добавлении 1000 объектов какой-нибудь ие8 в любом случае умрет, тут никуда не денешься.

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

Тут проблема именно в группах судя по всему.

ТС - можно либо ссылку на пример, либо подключите debug режим и скажите где там стек переполняется?

http://userside.ua/userside/oper/map.php?type=show&code=18&opt_wh=1

 

Только сперва авторизоваться

http://userside.ua/userside/oper/index.php

login: map

pass: map

подключите debug в строке вызова api карт

а вообще, быстро это работать не будет - слишком много объектов. 

как вариант - активные области с кэшированием (например, nginx-ом)

Подключил дебаг.

Быстро и не надо. Надо чтобы просто работало.

 

 

Наше пользовательское соглашение запрещает использование API в закрытых внутренних приложениях. Ваш сервис нарушает п. 2.3.2.:

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

К сожалению, мы вынуждены просить Вас отключить наши карты.

Несогласен.

Требуется разъяснение.

Если я использую сервис Яндекс.Карты в собственном скрипте (локальный компьютер/внутренний корпоративный сервер) - и использую АПИ - чтобы добавлять метки, объекты какие-то - разве я должен обеспечить доступ к этому скрипту всем третьим лицам? Либо я в принципе не могу такие скрипты делать на локальной машине?

Спасибо.

На внутреннем корпоративном сервере использовать нельзя.

На домашнем компьютере можно.

Не нашел в правилах это разъяснение насчет домашнего компьютера. Подскажите - где это написано?

 

Кроме того - второй момент - если вопрос упирается в обеспечение доступности третьих лиц, то - пожалуйста - http://userside.ua/userside/oper/index.php - сюда может войти любой посетитель и работать с картами без регистрации. Денег за это мы не берём.

 

Спасибо.

На нашем API нельзя делать платные сервисы. А также сервисы, недоступные всем без исключения пользователя интернета. 

Ссылка, которую Вы дали, это демо-версия. Основной Ваш продукт платный. Такое использование запрещено.

Разделим понятия.

Мы не делаем платные сервисы на вашем API. Остановившись на вопросе - если выкинуть из нашего платного продукта 99% функционала о котором речи нет сейчас - то мы продаем/иногда дарим продукт, в котором есть возможность самостоятельно рисовать (с помощью вашего API) полигоны и линии. И только. Координаты этих объектов хранятся в базе клиента. Мы не знаем что он там рисует и рисует ли вообще. Опять же - продукт устанавливается на компьютере клиента, имеет свой клиентский URL, не у нас на серверах и мы к нему доступа не имеем. Таким образом - как я вижу - мы отвечаем только за свою демо версию (на нашем URL userside.ua), где происходит использование АПИ, а как я уже прояснил - туда доступ открыт и нарушения доступа третьих лиц не происходит. За использование АПИ на других URL (у клиентов, которые собственно и используют его там) - мне кажется мы не можем отвечать. Спасибо.

Жаль, что мы с Вами не пришли к согласию. Мы вынуждены передать вопрос нашим юристам. 

Дело в том, что Вам и не нужно со мной к согласию приходить. Я только разрабатываю некоторые направления в этой системе и не являюсь руководителем/собственником проекта. А мои слова руководителю о том, что меня кто-то просил в блоге отключить использование АПИ Яндекс.Карт звучит, согласитесь, мягко говоря несерьезно. Поэтому о чем я и просил выше - пусть будут официальные запросы. 

 

Что касается моей субъективной и неофициальной точки зрения - то Вы меня не убедили и аргументированых ответов на мои вопросы мне никто не дал.

Мы уже готовим официальное письмо.

Дим, ты чего смуту наводишь? Какой домашний компьютер? В закрытых системах нельзя совсем :-)

я же могу тренироваться, разрабатывая на локалхосте =)

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

 

На данный момент пока это разговор "кого-то с кем-то в каком-то блоге". К тому же я вижу разницу в толковании правил (можно/нельзя на локальных компьютерах), поэтому - давайте перейдем в официальную плоскость. Пусть нам напишут письмо на office@userside.ua - и там все моменты изложат, если есть претензии. Можно будет продолжить полемику, разъяснить моменты и найти какое-то решение. Если нельзя использовать АПИ - то ОК, но хочется прояснить все неувязки и иметь в этом полную уверенность. Спасибо.