在https://jsfiddle.net/geocodezip/yvekp0ud/1/中测试我发现了奇怪的问题。
我正在使用两个 URL 测试相同的 nodejs 代码:
https://openlayers.org/en/latest/examples/data/kml/2012-02-10.kml **works with nodejs**
https://geo.anantara.cl/maps/kml/doc.kml **dosen't works with nodejs**
所以,我发现有必要配置一个 apache web 服务器,包括以下 AddType
Apache Web 服务器配置
所以,同样的nodejs代码,结果是:
1) 如果两个 kml 文件都在我的 Web 服务器 apache 上(2012-02-10.kml 和 doc.kml),则不起作用
2) 如果只测试文件 2012-02-10.kml 但在服务器 openlayers.org
另一方面,如果我使用以下 url ** http://kmlviewer.nsspot.net/ **for 在我的网络服务器上测试这两个文件,使用谷歌地图,一切正常。
我猜 openlayers 或我的代码中存在一些错误,或者使用 google earth 生成的 kml 文件不喜欢 openlayers。
我的代码是:
import 'ol/ol.css';
import { Map, View } from 'ol';
import TileLayer from 'ol/layer/Tile';
import VectorLayer from 'ol/layer/Vector';
import OSM from 'ol/source/OSM';
import KML from 'ol/format/KML';
import VectorSource from 'ol/source/Vector';
var openstreet = new TileLayer({
source: new OSM()
});
var geomapa = new VectorLayer({
source: new VectorSource({
//url: 'https://geo.anantara.cl/maps/kml/doc.kml',
//url: 'https://geo.anantara.cl/maps/kml/2012-02-10.kml',
url: 'https://openlayers.org/en/latest/examples/data/kml/2012-02-10.kml',
format: new KML()
})
});
const map = new Map({
target: 'map',
layers: [openstreet, geomapa],
view: new View({
center: [0, 0],
zoom: 0
})
});
我的 HTML 代码是
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Using Parcel with OpenLayers</title>
<style>
#map {
width: 400px;
height: 250px;
}
</style>
</head>
<body>
<div id="map"></div>
<script src="./index.js"></script>
</body>
</html>