OpenLayers:从本地文件加载TileJSON

时间:2016-07-27 12:32:26

标签: ios json cordova openlayers-3

我正在尝试通过Cordova在iOS应用中实现TileJSON的本地副本。我遇到的问题是OpenLayers似乎没有将JSON文件识别为有效,因此不会显示任何切片。我尝试了相同TileJSON的本地和远程版本并查看了控制台日志,本地版本的状态为“错误”(但没有解释该错误可能是什么......)。

我认为问题在于使用file:网址而不是http:加载JSON文件。我已将JSON文件放在远程服务器上,这不仅可以正常加载,而且实际上从本地路径加载切片。

OpenLayers可以被欺骗接受本地文件作为有效的JSON文件吗? Cordova可以强制通过HTTP加载本地文件吗?我认为这些选项中的任何一个都可以解决这个问题。

由于

编辑:这是我用来加载TileJSON的代码:

var mapLayer = new ol.layer.Tile({
    source: new ol.source.TileJSON({
        url: getPhoneGapPath() + 'tiles.json',
        crossOrigin: 'anonymous'
    })
});
this.map.addLayer(mapLayer);

function getPhoneGapPath() {
    var path = window.location.pathname;
    path = path.substr( path, path.length - 10 );
    return path;
}

getPhoneGapPath()函数用于获取Cordova应用程序的webroot路径。

1 个答案:

答案 0 :(得分:1)

这可能与OpenLayers中的错误https://github.com/openlayers/ol3/issues/5647有关。修复将在下一个版本中。

还要确保将Cordova配置为允许在从file:// url提供应用程序时访问file:// urls。 Chrome中的等效选项为--allow-file-access-from-files