Google Maps API v3 :Маркеры не удаляются

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

У меня есть объект, содержащий информацию о маркере, который также содержит объект маркера Google Maps. Мой код определяет, следует ли удалить рынок, на основе ограничивающей рамки или уровня масштабирования -. Я установил объект маркера на «setMap (null );» и с помощью firebug я вижу, что он установлен, затем я полностью удаляю родительский объект, и длина данных объектов обновляется правильно.

Я вывожу в консоль Firebug, когда маркер предположительно удален, кажется, что он работает, и я вижу, что маркер не воссоздается -из ajax-вызова для маркеров при изменении ограничивающей рамки.

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

Должно быть, я делаю что-то не так с логикой своего кода, я в тупике.

Вы можете просмотреть источникhttp://www.trailforks.com/map/test.php?lat=49.352247&lon=-123.202413 JS этоhttp://www.trailforks.com/map/includes/map.js

код удаления маркера внизу

function clearMarkerMemory(mapItem, i) {
  google.maps.event.removeListener(mapItem.lis);    // remove stored listener

  mapper.data[i].obj.setMap(null); // remove marker
  mapper.data.splice(i, 1);

  console.log("removed marker "+mapItem.icon+":"+mapItem.nid+' '+mapItem.name);
};

Я добавил еще немного отладки в консоль, перейдя в простую область карты всего с двумя маркерамиhttp://www.trailforks.com/map/test.php?lat=49.43210641783767&lon=-123.49878636730955&z=14

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

enter image description here

9
задан Canadaka 21 July 2012 в 19:30
поделиться