谷歌地图标记上的慢循环

时间:2012-03-18 01:41:18

标签: javascript google-maps-api-3

我有一个关于谷歌地图标记和JavaScript的问题。

我有一个页面,只有一个div(map_canvas),当你点击它时会创建一个标记,还有一个文本字段,你输入一个标记的名称,标记开始弹跳......

跟踪标记我有一个添加的所有标记的数组。问题是,当它达到20多个标记时,UI在循环时往往会变得无响应......

这是我拥有的循环,它在一个函数中,它将标记id作为参数

for (var i=0; i < markers.length; i++) {
        if(markers[i].id == id)
        {
            if(markers[i].getAnimation() != null)
            {
                markers[i].setAnimation(null);
            }
            else
            {
                markers[i].setAnimation(google.maps.Animation.BOUNCE);
            }
        }
        else
            markers[i].setAnimation(null);
    }

如果这是重新发布或者我应该提供更多信息,请告诉我......这是我的第一个问题!

2 个答案:

答案 0 :(得分:1)

我建议您使用id作为markers数组中的索引,以便您可以直接访问每个标记,而不是循环查找它。一旦你有一个“当前”标记,记下它是什么,以便你知道当你开始下一个弹跳时哪一个停止弹跳。

var lastmarker;
...    
if (lastmarker) {markers[lastmarker].setAnimation(null)}
markers[id].setAnimation(google.maps.Animation.BOUNCE);
lastmarker=id;

当然,这个建议的可行性取决于你的其余代码,我们一无所知。

答案 1 :(得分:0)

我建议在你的代码中添加步骤/断点,不确定你所处的编码环境.....如果你只是使用直接的html我会建议使用firebug来使用断点来逐步执行你的代码,因为这将允许您可以在代码中查看问题。我猜这是代码相关的。

如果你已经这样做了,我很困惑你的问题为什么它会停止工作在20个或更多标记....如果它不是代码相关我会冒险猜测它有什么东西给一旦你在某些事情上超过他们的最大值,我会遇到一些真正奇怪的事情,尽管我之前没有经历过最大标记位置,我做了类似于你正在做的事情但是在asp环境中有很多更多标记。