【发布时间】:2021-01-08 02:57:08
【问题描述】:
我必须在 Leaflet 应用上加载 KML 层。经过一番浏览后,我发现了一个名为leaflet-kml 的库,它可以做到这一点。我可以通过两种方式加载 KML 图层:通过 KML 图层的 URI 或 KML 字符串。 KML 存储在服务器中,我有检索 URI 和字符串表示的后端代码。
这是使用 URI 的方法。
function LoadKML(containerName, name)
{
let kmlURL = GetKmlURI(containerName, name);
let kmlLayer = new L.KML(kmlURL);
map.addLayer(kmlLayer);
}
这是使用 kml 字符串的方法。
function LoadKML(containerName, name)
{
let kmlString = GetKmlString(containerName, name);
let kmlLayer = new L.KML.parseKML(kmlString);
map.addLayer(kmlLayer);
}
由于 CORS 限制,我无法使用第一种方法获取 URL。第二种方法返回一个字符串,但无法正确解析。
KML.js:77 Uncaught TypeError: this.parseStyles is not a function
at new parseKML (KML.js:77)
at LoadKML (Account:470)
at Account:461
应该如何调用leaflet-kml中的函数?是否有可以轻松将 KML 加载到传单中的库?
【问题讨论】:
-
我不知道那个插件,但我的直觉是将 kml 放入 Leaflet 原生使用的 GeoJSON。
-
您确定您正在正确加载库吗?该错误不是解析错误,而是您正在执行的代码的类型错误。 Github 上的 L.KML.js 文件显然将
this.parseStyles定义为一个函数。您能否通过 JSfiddle 或类似服务分享该问题的最小复制? -
只有与后端通信才能访问kml文件。是否有任何在线 KML 可供我参考以便重现错误?