2012-03-18 12 views
2

GoogleマップのマーカーとJavaScriptに関する質問があります。Googleマップのマーカーが遅い

私はあなたがそれをクリックすると、マーカーを作成しDIV(map_canvas)、そしてあなたの入力マーカーの名前とマーカーがバウンドを開始テキストフィールドを持つページを持っている...

へ私はすべてのマーカーが追加された配列を持っているマーカーを追跡します。問題は、それがマーカーを20 +するために取得するときにそのループが...ここ

は、そのパラメータ

としてマーカーIDを取る関数の内部で、私が持っているループである一方、UIが応答しなくなる傾向があるということです
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); 
    } 

これが再投稿か、もっと情報を提供する必要がある場合はお知らせください...これが私の最初の質問です!

+0

ルーピング中にUIが反応しなくなる傾向があることを明確にすることができます。跳ね返ったり、地図が表示されません –

+0

ループ中に地図が反応しません...地図上をクリックして移動しようとすると、ループがマーカーを見つけている間に応答しません – gastonfartek

+0

アニメーションをマーカーに設定した後にマップするか? –

答えて

1

markersアレイのインデックスとしてidを使用することをお勧めします。ループする代わりに直接各マーカーにアクセスできるようにします。 「現在の」マーカーを取得したら、次のバウンスを開始するときにどのマーカーがバウンスを止めるかを知るために、そのマーカーをメモします。

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

もちろん、この提案の実行可能性はコードの残りの部分に依存しますが、わかりません。

0

あなたのコードにステップ/ブレークポイントを追加することをお勧めします。あなたがまっすぐなhtmlを使用している場合、どのコーディング環境を使用しているのかわかりません。このようにブレークポイントを使用してコードを実行するには、あなたのコードで問題を見ることができます。私はそれがコード関連であると推測しています。

これまでに行ったことがある場合は、20以上のマーカーで作業を停止する理由について、私はかなり困惑しています。コード関連でない場合は、何かがあると推測します前にマーカを配置した経験はありませんでしたが、特定のものについてはマックスを過ぎてしまえば、私はいくつかの本当の奇妙な出来事に遭遇しましたが、Googleのapiと関係があります。より多くのマーカー。

関連する問題