我正在尝试通过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路径。
答案 0 :(得分:1)
这可能与OpenLayers中的错误https://github.com/openlayers/ol3/issues/5647有关。修复将在下一个版本中。
还要确保将Cordova配置为允许在从file:// url提供应用程序时访问file:// urls。 Chrome中的等效选项为--allow-file-access-from-files
。