我正在从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菜单->更多工具->开发人员工具开始调试。在“隐藏标记”上,单击和“跨下一个函数调用”更改会立即反映在地图上-红色标记从地图上消失。
单击“显示标记”并单击“跳过下一个函数调用”,则什么也没有发生。我可以长时间单击“全部跳过下一个功能”,但仍然没有任何反应。当我单击“恢复脚本执行”时,仅显示红色标记。
这是一个错误吗?这种行为有什么解释吗?
答案 0 :(得分:0)
这个问题没有得到任何关注,也没有积极的反馈。无论如何,我设法对其进行了破解。只需增加执行之间的延迟
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);
}
}