2016-04-15 6 views
7

Ich mag würde ein Stück Karte injizieren, die ich von OpenStreetMap unter Form einer osm Datei einsehen.eine Offline-interaktive Karte in QML Verwenden

Von dem, was ich in der Dokumentation gelesen habe, scheint die Open Street Map Plugin keinen Parameter zu haben, der eine Quelldatei als eine Karte nimmt. Es funktioniert nur mit einem Server. Problem ist, dass ich beim Ausführen meiner Anwendung keine Internetverbindung haben werde. Ich muss intern eine Karte verwenden.

Das Gleiche gilt für Mapbox und HERE Plugins.

Gibt es eine andere Möglichkeit, dies zu tun?

ist die vorformulierten eine Karte zu erstellen:

Plugin { 
    id: somePlugin 
    // code here to choose the plugin as necessary 
} 

Map { 
    id: map 

    plugin: somePlugin 

    center { 
     latitude: -27 
     longitude: 153 
    } 
    zoomLevel: map.minimumZoomLevel 

    gesture.enabled: true 
} 

Antwort

5

-Update April 2017: QtLocation unterstützt jetzt offline OSM Fliesen. http://doc.qt.io/qt-5/location-plugin-osm.html

Siehe Wie Sie beachten, nicht geben QtLocation zur Zeit nicht, dass Sie die offline option. Außerdem ist es derzeit für Grundkarten unterstützt nur image tiles (nicht die OSM-Daten XML-Vektor Sie sprechen).

Sie haben ein paar Alternativen:

In QML: Sie ArcGIS Runtime SDK for Qt verwenden können. Ab Version 10.26 können benutzerdefinierte Kartenebenen mit Offline-Kacheln hinzugefügt werden. Sie müssen zuerst PNG/JPG-Kacheln Ihrer OSM-Daten erhalten. Hier ist ein example layer, der OSM slippmap Plättchen unterstützt.

In C++ werden Sie gleich ein paar Optionen finden Vektordaten anzuzeigen, oder nicht Umwandlung von dem OSM-Format und mehr Arbeit an Ihrer Seite erforderlich machen könnte:

Auch vergessen Sie nicht, für die genannten Probleme abo abstimmen in Qt Bugtracker!

+0

Trotz der bequemste Funktion für mein Problem zu sein, ist ArcGIS zu schwer (700 MB). MaxpboxGL scheint der einfachste Weg zu sein, um eine Offline-Map von Kacheln zu bekommen, aber ich würde die 'QMapboxGL' in ein QML-Objekt konvertieren müssen. Ich frage mich, ob das machbar ist. –

+0

Leider unterstützt das 'QMapboxGL' Projekt Windows nicht. Ich brauche mein Projekt plattformübergreifend. –

+0

Die ArcGIS-Laufzeitbibliothek in Ihrer App wird nur ein paar hundert Kbs sein, so dass nicht zu viel von einem Problem sein soll. Auf dem Hostcomputer müssen Sie es jedoch auf Systemebene installieren. –

1

Sie können tiles für die Offline-Nutzung generieren oder herunterladen. Um Fliesen zu erzeugen, werfen Sie einen Blick auf TileMill oder Maperitive. Das Herunterladen von Kacheln kann über Marble und verschiedene andere Tools erfolgen. Bitte beachten Sie jedoch die Nutzungsrichtlinien des Kachelservers! Das Herunterladen von hohen Zoom-Kacheln verursacht eine hohe Belastung des Kachel-Servers, da diese Kacheln normalerweise nicht zwischengespeichert werden und im laufenden Betrieb gerendert werden müssen.

+1

Großartig! Ich habe Maperitive verwendet, um 'png' Kacheln aus meiner' osm' Datei zu erzeugen. Jetzt muss ich sie verwenden, um die Karte zu generieren. –