2

私はかなり厄介な問題に遭遇しました。低速のインターネット接続で Google マップのコードをテストし始めましたが、想定どおりに機能しなくなりました。

問題は、マップ上でアニメーションを実行しているときにイベントをリッスンしていることですが"tilesloaded"、接続が遅いため、一部のタイルがハングしてロードされない可能性があります..マップの中央に灰色のタイルがあり、プログラムがロードされるのを待っているため続行しません.

エラーをキャッチするためにfirebugコンソールを使用しましたが、次のように表示されました。

画像の破損または切り捨て: https://mts0.googleapis.com/vt?lyrs=m@183000000&src=apiv3&hl=fi-FI&x=18706&y=8527&z=15&s=Galil&style=api%7Csmartmaps

それをブラウザに貼り付けて、そこから欠落しているタイル画像を見つけました。くそっ!存在しますが、時々ロードされません:)

問題は、一部のタイルをロードできない場合にトリガーされるようなイベントがないことを知っている限り、一定期間後に不足しているタイルまたはすべてのタイルを強制的に再ロードするにはどうすればよいかということです。また、コンソールに表示されるエラーは常に表示されるとは限らないようです。Googleマップのイベントも使用してみ"idle"ましたが、タイルがロードされるのを待たず、プログラムが遅れて続行されます。(私が欲しいものではありません。)

私も使用してgoogle.maps.event.trigger(my_map, 'resize');いますが、役に立たないようです。

編集:

変数などの値が失われるため、ページ全体を更新することはオプションではありません。この読み込みの遅さはテストが難しく、タイルを再読み込みする必要があるマップ上の特定のポイントに移動するときに発生します。

何か案は?事前にt​​hnx!

4

4 に答える 4

3

JavaScriptマップでは、ブラウザーのサイズ変更に応答し、不足しているタイルをロードするため、必要なのはブラウザーイベント「サイズ変更」を起動することだけです

var evt = document.createEvent('UIEvents');
evt.initUIEvent('resize', true, false,window,0);
window.dispatchEvent(evt);
于 2014-05-28T22:25:53.323 に答える
2

V3 API ではベース マップにアクセスできないため、できることは、マップ オブジェクト ( map = null) を破棄して、まったく同じものを新しく作成することだけです。正常にダウンロードされたタイルは、ブラウザーのキャッシュに残っているはずです。

于 2012-08-29T09:48:40.357 に答える
0

まず第一に、これはバグのように思えます (タイムアウトした場合、API はタイルのフェッチを再試行する必要があります)。イシュー トラッカーにファイルしてください。

mapTypeId プロパティへの変更をマップに通知することで、おそらく更新をトリガーできます。

google.maps.event.notify(map, 'mapTypeId')

于 2012-09-05T04:04:39.683 に答える