我目前正在構建一個Google Maps項目,該項目將根據用戶輸入動態加載和卸載各種KMZ文件。它可以很好地適用於大約8層的加載/卸載,但是隨後Google Maps發生414錯誤。我將問題追溯到API生成的存儲字符串中,以引用每個KML層。谷歌地圖KML加載 - 414請求URI太大
下面是運行時單擊某個層的代碼:
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文件一次,其存儲在一個對象,並在隨後的加載/卸載中引用它。這裏的問題是JavaScript對象裏面是new google.maps.KmlLayer
產生,大長字符串
"kml:cj5TNh3iqySpI_DAGiDgbSJESQ-dakZTiMY09US6imjvFNPMTIIYNAg|ks:;dc:cg;ts:44610546|kv:3|api:3"
並追加該請求每次URI。這會相當快速地加起來,並且在7-8追加之後,URI太長,並且任何後續請求都被忽略。
有沒有辦法使用這個長請求字符串,我可以強制它使用自定義字符串,或者每次只清除URI?我只會處理大約6個文件,我真的希望能夠處理儘可能多的圖層加載/卸載。
這是更多你在說什麼? https://gist.github.com/2837721 不完全確定你的意思是'毀滅'。我可以'setMap(null)'層,但據我所知,這就是我所能做的。這個代碼目前還沒有達到卸載層的效果。仍然遇到URI錯誤。 – colinwd
是的,這就是我所說的基本知識。我有非常相似的代碼,從來沒有達到requestURI限制。 –