我无法显示KML

问题描述 投票:2回答:3

我正在openlayers中迈出第一步,我发现它很有趣,但是基于一个简单的示例来展示OSM,对于我来说,添加一个带有KML文件的图层并一起显示是不可能的。

我知道我即将实现这一目标,这就是为什么我向你致意,在此先感谢您的帮助。

我的代码如下:

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: 'maps/kml/doc.kml',
        format: new KML()
    })
});


const map = new Map({
    target: 'map',
    layers: [openstreet, geomapa],
    view: new View({
        center: [0, 0],
        zoom: 0
    })
});
javascript openlayers kml openlayers-6
3个回答
0
投票

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 Server Configuration

所以,同样的nodejs代码,结果是:

1)如果两个kml文件都在我的Web服务器apache上(2012-02-10.kml和doc.kml),则不起作用

2)如果仅在服务器openlayers.org中使用文件2012-02-10.kml进行测试

另一方面,如果我使用以下URL **http://kmlviewer.nsspot.net/**来测试我的Web服务器上的两个文件以及google map,则全部正常。

我想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>

0
投票

Hurra!调试包裹,我发现以下错误

    Access to XMLHttpRequest at 'https://geo.anantara.cl/maps/kml/2012-02-10.kml' 
from origin 'http://localhost:1234' has been blocked by CORS policy: 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 

[http://localhost:1234/]
Failed to load resource: net::ERR_FAILED [https://geo.anantara.cl/maps/kml/2012-02-10.kml]

所以在快递服务器上工作。。


0
投票

已解决!

© www.soinside.com 2019 - 2024. All rights reserved.