0

KML レイヤーで Google Maps JavaScript API v3 を使用して、カスタム マーカー付きの地図を表示しています。

マップは、Google サイトの添付ファイルとして公開した KML ファイルにリンクしています。読み込まれると、マップは KML ファイルからの各 PlaceMark を正しく表示しますが、ポップアップ バルーンは表示されません。

まれに、ピンをクリックするとバルーンが表示され (5% の確率)、他のピンが機能しなくなります。カスタム ピン イメージをズームインおよびズームアウトすると、散発的にデフォルトのピン イメージに戻ります。

明示的にクリック可能を true に設定し、suppressInfoWindows を false に設定するために、layerOptions を追加しました。バルーンの動作は変わりません。

Chrome v19、Firefox v12、および IE8 でテストしました。

更新 1:

KML にタイプミス (bal*l*oon) が見つかりました。まだ正しく動作していません。何かがピンをバギーにしています。

更新 2:

v3 が動作するようになりました。Google のキャッシングにより、これをテストすることが難しくなりました。キャッシングを防ぐために、KML URL に「?nocache=0」を追加しました。BaloonStyle が問題でしたが、キャッシュによってタイプミスが残りました。KML をパーソナル サーバーに移行しています。

ライブ HTML マップ ページ(固定)

ライブ KML ダウンロード(固定)

私の参照:

4

3 に答える 3

3

Google は意図的に KML をキャッシュしています。回避策は、URL の末尾に現在の時刻のようなものを追加して、毎回異なるようにすることです。

var kmlFile = 'http://www.myserver.com/my.kml?'+(new Date()).getTime();
var kmlLayer = new google.maps.KmlLayer(kmlFile);
kmlLayer.setMap(myMap);
于 2012-06-07T21:48:25.447 に答える
1

私の問題:

  • BalloonStyle タグのタイプミス
  • KML ファイルの古いキャッシュ

次の場合、これはより簡単でした。

  • KML の解析時に Google マップ JS がエラーをスローする
  • Googleキャッシングはかなり高速でした
  • サーバーでテストを開始しました

アップデート:

KML ファイルをサーバーに移動しましたが、最初の変更後、キャッシュが古いままでした。Google マップ オブジェクトが KML オーバーレイを読み込むときにキャッシュが発生するようです。システムやサーバーのキャッシュではないことを確認しました。

KML に変更を加えてキャッシュが更新されないと、ピンの動作が不安定になります。すべてのピンが正しい位置に表示されますが、ピンの 1 つにバルーンが表示されません。ファイル名を変更しました。正常に動作します。

更新 2:

このキャッシュ動作を Google Maps JS API のバグとして報告しました。

http://code.google.com/p/gmaps-api-issues/issues/detail?id=4196

結論:

ASP.NET/C# クラスを作成して住所をジオコーディングし、このエラーを見つけるよりも短い時間で KML ドキュメントを作成しました。

あまりにもハードな Google のキャッシュを停止します。

于 2012-06-07T14:49:28.037 に答える