web-dev-qa-db-ja.com

「UncaughtRangeError:Maximum call stacksizeexceeded」エラーの原因は何ですか? (Chrome、他のブラウザでは他のメッセージ)

そのエラーの原因と解決策を見つける方法がわかりません...

プロジェクト の下での作業:

http://atlas.sitegist.net/business/atlas/?l=en&h=6dff16b6f593384662cb24d66142047a

プロジェクトでは、整数値でさまざまなデータを表示し、それらすべてをマップにも表示します。新しいデータセットの別の視覚化を追加すると、エラーが発生します。

テスト情報:

ほとんどの場合、UIでいくつかのイベントを実行する必要があります。もちろん、以下にリストされているいくつかの混合を実行する必要があります。

  • [プロジェクト]ボタンをクリックしてから、プロジェクトのツールバーセクションのチェックボックスをオン/オフにする必要があります
  • 左側のサイドバーパネルでイベントをクリックする必要があります(特定のデータセットでは、親のいずれかを選択してオブジェクトを選択するため、折りたたみを展開する必要はありません)

5分でエラーが発生することがあります。最初のショットで時々、しかしほとんどの場合3-4UIリクエストで。

上記のリンクは、最初から、または2〜3のイベントトリガーによってエラーを再現します。

エラー:コンソールからコピー&ペースト

そして、私がChromeコンソールで持っているそのようなエラー:

Uncaught RangeError: Maximum call stack size exceeded
H.get
(anonymous function)
Mu.(anonymous function).zoomRange_changed
yf
H.set
(anonymous function)
Mu.(anonymous function).zoomRange_changed
yf
H.set
(anonymous function)
Mu.(anonymous function).zoomRange_changed
yf
...
H.set
(anonymous function)
Mu.(anonymous function).zoomRange_changed
yf

そしてもう1つ:

<error>
(anonymous function)
$
nm
Du
H.bf
H.mapType_changed
yf
H.set
H.aa
Tg.(anonymous function).J
(anonymous function)
Q.trigger
H.aa
Tg.(anonymous function).J
(anonymous function)
Q.trigger
H.aa
Tg.(anonymous function).J
(anonymous function)
Q.trigger
H.aa
...
H.aa
Tg.(anonymous function).J
(anonymous function)
Q.trigger

I.setに関する情報が不足しているため、解決策の下での解決策は役に立ちませんでした。また、「Gmaps4Rails」も使用していません。

Gmaps4Rails最大呼び出しスタックサイズを超えましたか?

13
Roman M. Koss

解決しました!!!

bounds変数に問題が見つかりました。

サーバーからJSONを受信すると、それを解析している間、コードはマップ上の各場所からバインドされます。

// renew map bounds each time when new query comes
bounds = new google.maps.LatLngBounds ();
...
for (var key in data.locations ) {
    ...
    // For fitting in Bounds, we Push the positions of each location
    atlas.Map.vars.bounds.extend ( new google.maps.LatLng(
        data.locations [key].lat,
        data.locations [key].lng
    ) );    
    ...
}
...
GoogleMap.fitBounds (bounds);

そして、どういうわけか、新しいデータ型では、ブラウザスタックがオーバーフローします。

(非常に奇妙なことですが、通常どおりに機能して、さらに大きな結果が得られます!(マップ上の600 <要素))。

迅速な結果を得るための野蛮なコードを作成しました:

bounds = new google.maps.LatLngBounds ();
if( KMLLayer.poly.docs[0].bounds != undefined ) {
    bounds.extend( KMLLayer.poly.docs[0].bounds.getNorthEast() );
    bounds.extend( KMLLayer.poly.docs[0].bounds.getSouthWest() );
}
if( KMLLayer.marks.docs[0].bounds != undefined ) {
    bounds.extend( KMLLayer.marks.docs[0].bounds.getNorthEast() );
    bounds.extend( KMLLayer.marks.docs[0].bounds.getSouthWest() );
}
GoogleMap.fitBounds (bounds);

KMLレイヤーが2つあるので、境界が発生した場合は、GeoXML3レイヤーから境界を取得しました。

くそー、私はそれのために6時間38分を費やします!!!

多分私はこの行で間違っていました、何がグローバル変数をひどくクリアします:

bounds = new google.maps.LatLngBounds ();

変数の元の名前は少し長くなります:)bounds === atlas.Map.vars.bounds;

8
Roman M. Koss

同じエラーが発生しました。しかし私の場合、問題は緯度と経度のデータに関係していました。この問題が発生したのは1ドット不足でした。

関連: https://groups.google.com/forum/?fromgroups=#!topic/google-maps-js-api-v3/1SCjxGntr

7
Bas G

このエラーは通常、(Google Chromeで)allminimumを設定し忘れた場合に発生しますマップのオプション。それらは次のとおりです。

var map = new google.maps.Map(
    document.getElementById( 'some-id' ),
    {
        center :    new google.maps.LatLng( 43, 16 ),
        zoom :      10,
        mapTypeId : google.maps.MapTypeId.ROADMAP
    }
);
4
kaiser

ポリゴンパスに空のLatLngが含まれていますか?

これが発生したときに同じエラーを受け取りました-愚かな間違いですが、同様の状況で誰かを助けるかもしれません。

0
David Lamm