2016-07-27 12 views
0

Ich versuche eine lokale Kopie eines TileJSON in einer iOS App durch Cordova zu implementieren. Das Problem, das ich habe, ist, dass OpenLayers die JSON-Datei nicht als gültig erkennt und somit keine Kacheln anzeigt. Ich habe versucht, lokale und Remote-Versionen der gleichen TileJSON und schaute auf die Console Logs, die lokale hat den Status "Fehler" (aber keine Erklärung, was dieser Fehler sein könnte ...).OpenLayers: Laden eines TileJSON aus einer lokalen Datei

Ich denke, das Problem liegt an der Tatsache, dass die JSON-Datei mit einem file: URL statt http: geladen wird. Ich habe die JSON-Datei auf einen Remote-Server gestellt und das lädt nicht nur gut, sondern lädt die Kacheln aus dem lokalen Pfad.

Können OpenLayers dazu verleitet werden, die lokale Datei als gültige JSON-Datei zu akzeptieren? Kann Cordova gezwungen werden, lokale Dateien über HTTP zu laden? Ich denke, dass eine dieser Optionen das Problem beheben würde.

Dank

EDIT: Hier ist der Code, den ich die TileJSON laden bin mit:

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

Die getPhoneGapPath() Funktion den Pfad zur Webroot der Cordova App bekommen verwendet wird.

+0

Bitte zeigen Sie mir Ihren Code, durch den Sie Tilejson-Datei gelesen werden. –

+0

I Hassan, ich habe die Frage mit dem Code aktualisiert, der den lokalen TileJSON lädt. Es gibt nichts wirklich Außergewöhnliches mit diesem Code (abgesehen von der Pfadfunktion, die die JSON-Datei lädt, sie wird einfach nicht von OpenLayers verarbeitet). –

Antwort

1

Dies ist wahrscheinlich auf einen Fehler in OpenLayers, https://github.com/openlayers/ol3/issues/5647 bezogen. Das Update wird in der nächsten Version sein.

Stellen Sie außerdem sicher, dass Sie Cordova konfigurieren, um den Zugriff auf Datei: // URLs zu ermöglichen, wenn die Anwendung von einer Datei geliefert wird: // url. Die entsprechende Option in Chrome lautet --allow-file-access-from-files.

Verwandte Themen