我目前正在构建一个谷歌地图项目,它将根据用户输入动态加载和卸载各种 KMZ 文件。它适用于大约 8 层加载/卸载,但随后谷歌地图因 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 文件一次,将其存储在一个对象中,然后在后续加载/卸载时引用它。这里的问题是在生成的 Javascript 对象内部new google.maps.KmlLayer
,一个很大的长字符串
"kml:cj5TNh3iqySpI_DAGiDgbSJESQ-dakZTiMY09US6imjvFNPMTIIYNAg|ks:;dc:cg;ts:44610546|kv:3|api:3"
并每次都将其附加到请求 URI。这加起来相当快,并且在 7-8 附加之后 URI 太长并且任何后续请求都将被忽略。
有没有办法使用这个长请求字符串,我可以强制它使用自定义字符串,还是每次都清除 URI?我只会处理大约 6 个文件,我真的希望能够处理尽可能多的层加载/卸载。