現在、ユーザー入力に基づいてさまざまなKMZファイルを動的にロードおよびアンロードするGoogleマッププロジェクトを構築しています。およそ8レイヤーのロード/アンロードでは正常に機能しますが、Googleマップは414エラーで機能しなくなります。問題を、APIが各KMLレイヤーを参照するために生成している保存された文字列まで追跡しました。
レイヤーがクリックされたときに実行されるコードは次のとおりです。
function showLayer(layername) {
if (layers[layername].kml === undefined) {
layers[layername].kml = loadKML(layers[layername].file, layers[layername].options);
}
layers[layername].kml.setMap(map);
redrawRoutes(layers[layername].kml);
}
そしてloadKML関数:
function loadKML(file, options) {
var path = kmlDir + file;
options = options || { preserveViewport: true };
layer = new google.maps.KmlLayer(path, options);
return layer;
}
基本的に、私の目標は、各KMLファイルを1回だけロードし、それをオブジェクトに保存し、その後のロード/アンロードでそれを参照することです。ここでの問題は、new google.maps.KmlLayer
生成するJavascriptオブジェクトの内部に、大きな長い文字列があることです。
"kml:cj5TNh3iqySpI_DAGiDgbSJESQ-dakZTiMY09US6imjvFNPMTIIYNAg|ks:;dc:cg;ts:44610546|kv:3|api:3"
毎回これをリクエストURIに追加します。これはかなり迅速に加算され、7〜8の追加後、URIが長すぎるため、後続の要求はすべて無視されます。
この長いリクエスト文字列を使用する方法はありますか、カスタム文字列を使用するように強制することはできますか、それとも毎回URIをクリアするだけですか?合計で最大6つのファイルしか処理しないので、できるだけ多くのレイヤーのロード/アンロードを処理できるようにしたいと考えています。