Google Latitude Badge パブリック フィードをカスタマイズする方法を理解するのに何時間も費やしました。問題は、Google から事前定義された KML ファイルとして提供され、変更する方法がないことです。私が思いついたのは、少しの PHP を使用して座標を抽出し、それを自分の Web サーバー (パブリック アクセスであると想定しています) から提供される自分の KML ファイルにロードすることでした。
これは機能しますが、私が直面している最新の問題は、KML に加えているスタイルの変更 (Ballonstyle など) が、ページをリロードしたときに反映されないことです。次の Javascript を使用してマップとオーバーレイをロードしています。
var map;
var src = 'https://myip/kml/kmlfile.kml
function initialize() {
map = new google.maps.Map(document.getElementById('map-canvas'), {
center: new google.maps.LatLng(-19.257753, 146.823688),
zoom: 2,
mapTypeId: google.maps.MapTypeId.TERRAIN
});
loadKmlLayer(src, map);
}
function loadKmlLayer(src, map) {
var kmlLayer = new google.maps.KmlLayer(src, {
suppressInfoWindows: true,
preserveViewport: false,
map: map
});
}
KML ファイルは、緯度フィードから最新の座標セットを取得する PHP スクリプトによって書き込まれたファイルです。
ここに本当に奇妙なビットがあります。問題を診断するために、サーバーから kml ファイルを削除しました....しかし、マップはまだロードされており、何度も繰り返した古いスタイルを使用しているように見えます。kmlファイルが「src」の場所にさえ存在しない場合に、JavaScriptがマップをロードする方法について完全に混乱しています!?! これはキャッシュの問題ですか?
私はもともとGoogleサイトにkmlファイルを持っていましたが、書き込み可能な場所ではないため、そこから自分のWebサーバーに移動しました. 実際、Google サイトとウェブサーバーの両方から古い kml ファイルをすべて削除しましたが、マップとスタイルは魔法のように読み込まれ続けています。
この奇妙な問題を診断するのに役立つ可能性のある KML の専門家に感謝します。