Пример Google Maps - маркер показать / скрыть не отражается на карте сразу - PullRequest
0 голосов
/ 09 сентября 2018

Я отлаживаю ванильный пример с сайта Google: https://developers.google.com/maps/documentation/javascript/examples/marker-remove#try-it-yourself

JSFiddle доступно здесь: https://jsfiddle.net/esxq8agk/

Снимок экрана здесь: https://imgur.com/2JJERhr

Теперь я установил 2 точки останова:

'setMapOnAll(null)' line 108 

'setMapOnAll(map)' line 113

Затем я начинаю отладку с помощью меню Google Chrome -> Дополнительные инструменты -> Инструменты разработчика. При нажатии кнопки «Скрыть маркеры» и изменения «Перейти к следующему вызову функции» на карте отражаются немедленно - красный маркер исчезает с карты.

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

Это ошибка? Есть ли объяснение этому поведению?

1 Ответ

0 голосов
/ 11 сентября 2018

Этот вопрос не получает ни тяги, ни положительных отзывов. Мне все-таки удалось взломать его, чтобы заставить его работать на меня. Просто добавлена ​​задержка между выполнением

setMapOnAll(map) 

и

setMapOnAll(null)

Ниже приведен JSFiddle и фрагмент кода: https://jsfiddle.net/esxq8agk/28/

function removeNews() {
  setMapOnAll(newMarkers, null);
}

function showNew() {
  setMapOnAll(newMarkers, map);
  setTimeout(removeOlds, 50);
}

function removeOlds() {
  setMapOnAll(oldMarkers, null);
}
function showOld() {
  setMapOnAll(oldMarkers, map);
  setTimeout(removeNews, 50);
}

function setMapOnAll(set, map) {
  for (var i = 0; i < set.length; i++) {
    set[i].setMap(map);
  }
}
...