google-maps-api-3 - 动画后标记消失

标签 google-maps-api-3 markerclusterer

我使用带有标记聚类器 v3 的谷歌地图 v3 来显示 1000 个标记。我还有一个侧面板,列出了每个标记的标题。当用户将鼠标悬停在面板中的标题上时,我会为相应的标记设置动画,并在鼠标移开时停止动画。

当标记不在簇中时,这可以正常工作。当标记位于簇中时,我遇到问题。

如果标记位于群集中,我首先将标记的 map 对象从 null(之前由markerClusterer 设置,以便在将标记放入群集后将其隐藏)更改为我的 map 对象,然后为标记设置动画。再说一次,这有效。我在鼠标移出时遇到了问题。

鼠标移出时,我将标记动画设置为 null,然后将标记的 map 对象设置为 null。这符合您的预期(隐藏标记),但我无法让标记在任何后续悬停事件中再次显示。标记仍然存在于适当的集群对象内,我可以调用 setMap() 来设置标记的 map 属性,但标记仍然不会显示在 map 上。相关代码如下:

        if (event.type === 'mouseover' || event.type === 'mouseenter' ) {       
            if (!marker.getMap()) { //marker is in a cluster
                inCluster = true;
                marker.setMap(map)
            } else {
                inCluster = false
            };
            marker.setAnimation(google.maps.Animation.BOUNCE);
        } else {
            marker.setAnimation(null);
            if (inCluster == true) { //hide the clusterized marker
                marker.setMap(null)
            }
        };

如果我注释掉两个 setAnimation() 调用,那么代码将起作用,并且可以显示标记,然后按预期隐藏(只是没有动画)。另外,当我使用控制台时,我可以将标记显示在群集之外,然后我可以为它设置动画,然后我可以取消它的动画,然后我可以一遍又一遍地再次隐藏它。但是,如果我在取消标记动画之前调用 setMap(null),那么我就会遇到错误。

因此,仅当动画在调用 setMap(null) 之前尚未停止时才存在问题。我尝试设置一个计时器,让动画在调用 setMap 之前停止几百毫秒,这有时有效,但有时它会触发其他甚至更糟糕的行为。

任何解决此问题的帮助将不胜感激(并热切接受)!

最佳答案

我也遇到过同样的问题。这是 API 中的一个新错误。一旦我有了一个简单的可重现示例,我计划使用我的企业帐户创建一个案例。

关于google-maps-api-3 - 动画后标记消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10252982/

相关文章:

google-maps - Google map 无法在 https ://中工作

Javascript Google map 仅显示 100 个标记中的 10 个。有限制吗?

google-maps-api-3 - 谷歌地图混合和空中瓷砖丢失

javascript - 聚合物谷歌地图 - 绘制形状

javascript - 防止标记在 MarkerClusterer 中聚类

ios - 如何在 GoogleMaps for iOS 中从 Firebase 聚集标记

python - 使用请求从谷歌距离矩阵 api 获取响应时出现连接错误

google-maps - 谷歌地图距离近似

iPhone MKMapView注释聚类

javascript - 在 Android 应用程序的谷歌地图上放置数千个图钉