如何从本地服务器读取 Openlayers "EarthQuakes in KML" 的 KML 文件?
How to read KMLfile from local server for Openlayers "EarthQuakes in KML"?
我在本地服务器上使用以下 EarthQuake 地图:
https://openlayers.org/en/v4.6.5/examples/kml-earthquakes.html
我的 "Views" 文件夹中的应用程序中有一个独立的 "map.html" 地图。
实施这个工作正常,地图加载,并使用示例数据:
url: 'https://openlayers.org/en/v4.6.5/examples/data/kml/2012_Earthquakes_Mag5.kml'
数据显示在地图中,到目前为止一切正常
到这个'data-url',下载一个文件。所以我用我自己的 KML 数据点下载并编辑这个文件。然后我将此文件放在与我的 "map.html"(视图文件夹)相同的文件夹中。
我试图通过路径手动引用它,但遇到了一些 CORS 问题,然后我找到了一些 xmlhttprequest,但不确定这是正确的路径,因为它应该是一个文件 (?) .... .
所以这一切都归结为:
如何从 HTML-eartquake-file 中的脚本标记中将我的 kml 文件引用到同一文件夹中的此文件?
2020 年 2 月更新:
我想现在 CORS 问题已经解决了。但是,当我尝试实现它时它不起作用:
如果我在 VectorSource 中使用 Openlayer 示例 link - URL; https://openlayers.org/en/v4.6.5/examples/data/kml/2012_Earthquakes_Mag5.kml,我的应用程序下载这样的文件:"filename.kml"
如果我在我的服务器上使用我自己的文件,我会得到这样的文件"filename"
- 没有 .kml 扩展名。
- 在这种情况下 url 看起来像这样:https://myapp.net/mydata.kml
在 express/nodejs 中,我这样发送文件:
router.get("/mydata", function (req, res) {
res.sendFile(path + "mydata.kml");
});
这是 Chrome 下载栏中的示例:
如何发送带扩展名的文件?那会解决我的问题吗?
谢谢
如果您使用的是 IIS,则需要转到管理面板并将 .kml
添加到 MIME 类型。如果您正在规划很多地图应用程序,添加 .geojson
(application/json) 和 .gml
和 .gpx
(text/xml) 也可能有用。
您还需要为数据文件夹启用跨源访问
我在本地服务器上使用以下 EarthQuake 地图: https://openlayers.org/en/v4.6.5/examples/kml-earthquakes.html
我的 "Views" 文件夹中的应用程序中有一个独立的 "map.html" 地图。 实施这个工作正常,地图加载,并使用示例数据:
url: 'https://openlayers.org/en/v4.6.5/examples/data/kml/2012_Earthquakes_Mag5.kml'
数据显示在地图中,到目前为止一切正常
到这个'data-url',下载一个文件。所以我用我自己的 KML 数据点下载并编辑这个文件。然后我将此文件放在与我的 "map.html"(视图文件夹)相同的文件夹中。
我试图通过路径手动引用它,但遇到了一些 CORS 问题,然后我找到了一些 xmlhttprequest,但不确定这是正确的路径,因为它应该是一个文件 (?) .... . 所以这一切都归结为:
如何从 HTML-eartquake-file 中的脚本标记中将我的 kml 文件引用到同一文件夹中的此文件?
2020 年 2 月更新:
我想现在 CORS 问题已经解决了。但是,当我尝试实现它时它不起作用:
如果我在 VectorSource 中使用 Openlayer 示例 link - URL; https://openlayers.org/en/v4.6.5/examples/data/kml/2012_Earthquakes_Mag5.kml,我的应用程序下载这样的文件:"filename.kml"
如果我在我的服务器上使用我自己的文件,我会得到这样的文件"filename"
- 没有 .kml 扩展名。
- 在这种情况下 url 看起来像这样:https://myapp.net/mydata.kml
在 express/nodejs 中,我这样发送文件:
router.get("/mydata", function (req, res) {
res.sendFile(path + "mydata.kml");
});
这是 Chrome 下载栏中的示例:
如何发送带扩展名的文件?那会解决我的问题吗?
谢谢
如果您使用的是 IIS,则需要转到管理面板并将 .kml
添加到 MIME 类型。如果您正在规划很多地图应用程序,添加 .geojson
(application/json) 和 .gml
和 .gpx
(text/xml) 也可能有用。
您还需要为数据文件夹启用跨源访问