无法获得在OpenLayers3中工作的相对网址

时间:2016-02-21 19:30:58

标签: javascript openlayers-3

经过三天无所事事地到处寻找(学习书籍OpenLayers3,Javascript和Internet)以获得解决方案后,我在这里提出了我的问题。

问题在于我无法让相对的网址在OpenLayers3中工作。我在这里举个例子:

我在名为sandbox的地图/目录中有一个OpenLayersscript。 此脚本的HTML部分中的相对URL正在运行,包括javascript中的相对url到ol.js.

问题是脚本的Javascript部分中的相对url不起作用。只有当目标文件(nutsv9_lea.geojson)位于包含OpenLayersscript本身的地图/目录底层的地图/目录中时,它才有效,但仅适用于Firefox,而不适用于Google Chrome和InternetExplorer。

地图沙箱(包含此OpenLayersfile)位于maps /目录结构中:C:/ ol3_samples / sandbox 目标文件(nutsv9_lea.geojson)位于maps /目录结构中:C:/ol3_samples/assets/data/nutsv9_lea.geojson

我使用的相对网址是:url:' ../ assets / data / nutsv9_lea.geojson'

唯一可行的解​​决方案(如上面仅在Firefox中所述)是针对名为'数据'的基础地图/目录的相对网址。包含目标文件:url:' data / nutsv9_lea.geojson'在地图/目录结构中:C:/ol3_samples/sandbox/data/nutsv9_lea.geojson

我做错了什么或者我忽略了什么?

<script>

  var vectorSource = new ol.source.GeoJSON({
    projection: 'EPSG:3857',

    //not working relative url:
    //  url: '../assets/data/nutsv9_lea.geojson'

    //working url (with the targetfile in a directory below the directory containing this script) but only working in Firefox and not working in Chrome and InternetExplorer
    url: 'data/nutsv9_lea.geojson'
  });

  var vectorLayer = new ol.layer.Vector({
    source: vectorSource
  });

  var center = ol.proj.transform([5.231819, 52.091852], 'EPSG:4326', 'EPSG:3857');

  var view = new ol.View({
    center: center,
    zoom: 5
  });

  var map = new ol.Map({
    target: 'map',
    layers: [vectorLayer],
    view: view
  });
</script>

1 个答案:

答案 0 :(得分:1)

我是这本摘录的书的作者之一。您需要运行本地服务器(其中文件通过http://而不是file://提供)。

你只需要看看第117页。

它告诉你可以运行(只要你有Python)

python -m SimpleHTTPServer 如果您从Packt网站获得样本,请运行(如果您有节点)

node index.js

对于NodeJS和Python,您都有安装说明(第417页和第418页),

对于Python和不拥有该书的人,请转到http://docs.python-guide.org/en/latest/starting/installation/