Клуб API Карт

TypeError: Cannot convert 'e' to object

Altairk91
25 декабря 2013, 14:04

В поиске, при смене вывода результатов поиска со списка на карту(идёт обновление страницы через js), карта не отрисовывается. Opera выдаёт ошибку: "TypeError: Cannot convert 'e' to object". Chrome: "Uncaught TypeError: Cannot read property 'offsetWidth' of null".

 

Ругаются на файл: http://api-maps.yandex.ru/2.0.36/release/combine.xml

 

Ругаются на строку:

var n = e.offsetWidth

 

Написано на CoffeeScript:

search_map = ->  
  myMap = new ymaps.Map "objects_list",
    center: [56,29, 65,21]
    zoom: 13
  myMap.controls
    .add "zoomControl",
      left: 5
      top: 5
    .add("typeSelector")
    .add "mapTools",
      left: 35
      top: 5
if $("#select_show").val() == "map"
  $(".objects_list").empty()
  ymaps.ready search_map

 

CoffeeScript преобразованный в JS:

search_map = function() {
  var myMap;
  myMap = new ymaps.Map("objects_list", {  
    center: [56, 29, 65, 21],  
    zoom: 13 });  
  return myMap.controls.add("zoomControl", {
    left: 5,  
    top: 5
  }).add("typeSelector").add("mapTools", {
    left: 35, top: 5
  });
 };  
if ($("#select_show").val() === "map") {
  $(".objects_list").empty(); return YMaps.jQuery(search_map());  
 }  
});
10 комментариев
Подписаться на комментарии к посту
$(".objects_list").empty(); return YMaps.jQuery(search_map()); 

YMaps.jQuery это из версии АПИ 1

 

$(".objects_list").empty();

так удалять карту нельзя.

нужно вызвать myMap.destroy();

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

Пардон. Сейчас написано "ymaps.ready(search_map);"

$(".objects_list").empty();  -  Это не удаление карты, это удаление содержимого которое там было, чтобы не мешалось. Это в зависимости как хочет видеть пользователь, переключает тип отображения результатов запроса, но вашу мысль понял, буду через скрытые дивы. 

Всё равно выдаёт эти ошибки.

$(".objects_list").empty(); - это удаление тех нод, которые создала карта.

А карта ругается именно на то что какая-то нода у нее сдохла и почему-то null - если подлючить АПИ в mode=debug будет немного яснее.

Никогда не отрезайте у карты ноги, оставляя мозги - нужно убить - начинайте с мозгов (map.destroy тоесть)

спасибо за пояснение, сейчас попробую с дебагом. 

P.S. Я карту не удаляю, я удаляю всё содержимое дива чтобы не мешалось, при выводе карты.

$(".objects_list").empty(); пробовал убирать, ничего не меняет, ошибка остаётся и карта естественно не выводится.

 

Живой пример на пощупать есть?

что конкретно нужно? коды могу дать вопрос что именно)

Лучше давать ссылку на свой сайт

или выкладывать на jsfiddle.net

Всем спасибо! Разобрался.

Оказалось, что при вёрстке по запарке у дива установил class а не id и по этому не мог найти куда рисовать и матерился. Ошибку что не может найти кстати сказал когда я подключил в АПИ mode=debug.

Тема закрыта, всем ещё раз спасибо за помошь.

Altairk91,
Спасибо!