2016-07-27 19 views
0

私はCordovaを使ってiOSアプリケーションにTileJSONのローカルコピーを実装しようとしています。私が抱えている問題は、OpenLayersがJSONファイルを有効であると認識せず、タイルを表示しないということです。私は同じTileJSONのローカルとリモートバージョンを試して、コンソールログを見ましたが、ローカルのものは "エラー"のステータスを持っています(しかし、そのエラーが何であるかについての説明はありません...)。OpenLayers:ローカルファイルからTileJSONをロードする

http:ではなく、file:というURLを使用してJSONファイルがロードされているという問題が発生していると思います。 JSONファイルをリモートサーバーに配置しましたが、これは正常にロードされるだけでなく、実際にはローカルパスからタイルをロードします。

OpenLayersはローカルファイルを有効なJSONファイルとして受け入れることを騙されますか? CordovaはHTTP経由でローカルファイルを強制的にロードできますか?私はこれらのオプションのいずれかが問題を解決すると思います。

おかげ

EDIT:getPhoneGapPath()機能はコルドバアプリのWebルートへのパスを取得するために使用され

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; 
} 

:ここで私はTileJSONをロードするために使用しているコードがあります。

+0

私はtilejsonファイルを読むあなたのコードを教えてください。 –

+0

私はハッサン、ローカルのTileJSONをロードするコードで質問を更新しました。 JSONファイルをロードするパス関数を除いて、このコードでは本当に普通のことは何もありません.OpenLayersでは処理されません。 –

答えて

1

これは恐らくOpenLayersのバグであるhttps://github.com/openlayers/ol3/issues/5647に関連しています。修正は次のリリースになります。

また、アプリケーションがfile:// urlから提供されている場合は、file:// urlsへのアクセスを許可するようにCordovaを設定するようにしてください。 Chromeの同等のオプションは--allow-file-access-from-filesです。