【问题标题】:google maps example - marker show/hide not reflected on the map immediately谷歌地图示例 - 标记显示/隐藏未立即反映在地图上
【发布时间】:2018-09-09 17:08:06
【问题描述】:

我正在从谷歌网站调试香草示例: 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 菜单 -> 更多工具 -> 开发者工具进行调试。在“隐藏标记”单击和“跳过下一个函数调用”时,地图上的更改会立即反映 - 红色标记从地图上消失。

在“显示标记”单击和“跳过下一个函数调用”时没有任何反应。我可以继续单击“全部跳过下一个功能”一段时间,但仍然没有任何反应。红色标记仅在我单击“恢复脚本执行”时才会显示。

这是一个错误吗?这种行为有什么解释吗?

【问题讨论】:

  • 只有调试器有问题吗?否则,小提琴对我来说似乎可以正常工作,所以我怀疑这是 API 中的错误。
  • 主要问题是在我的应用程序中,我有许多不同的标记集要显示/隐藏。由于当我在两组标记之间切换时的解释行为 - 一切都在闪烁。即使我首先“显示新标记”然后“隐藏旧标记” - 旧标记会较早地从地图中隐藏/删除。我在这里问了另一个问题:stackoverflow.com/questions/52181450/…
  • 标记有不同的图标吗?你能移动地图上的那些(而不是全部隐藏,然后添加新的)吗?
  • 即使所有标记都具有相同的标准红色 google 图标,也会出现此问题。在我的情况下,所有标记集彼此分开并且具有不同数量的标记。没有简单的方法可以移动它们。我在这里录制了一个视频:vimeo.com/288317890
  • @geocodezip 我创建了另一个 JSFiddle 来展示它们在两组之间切换时如何闪烁:jsfiddle.net/esxq8agk/24 使用“显示旧标记”和“显示新标记”来查看它们在切换时如何闪烁。

标签: javascript google-maps google-maps-api-3 google-maps-markers


【解决方案1】:

这个问题没有得到任何关注或积极的反馈。无论如何,我设法破解它以使其对我有用。只是增加了执行之间的延迟

setMapOnAll(map) 

setMapOnAll(null)

下面是 JSFiddle 和代码 sn-p: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);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2015-01-25
    相关资源
    最近更新 更多