2017-01-22 57 views
3

我在Qt上使用QML來顯示需要互聯網連接的OpenStreetMap(使用osm插件)。 有沒有辦法讓我可以做到這一點,但離線運行它?例如,運行我自己的磁貼服務器(但要做到這一點很容易)?或者使用一個能讓我很快完成的庫。如何在QML中離線運行OpenStreetMap(Qt)

順便說一句,我在Ubuntu上運行我的程序。

任何幫助如何做到這一點,特別是如果有人可以提供的步驟來完成將不勝感激。

謝謝。

+1

看看[ArcGIS的運行SDK Qt的QML(https://developers.arcgis.com/qt/10-2/qml/api-reference/index.html) – folibis

回答

3

我已成功地顯示Qt中OpenStreetMap的離線(使用QML)按照以下步驟:

  1. 構建/運行在本地主機瓦片服務器。我已經使用以下指南:https://switch2osm.org/serving-tiles/building-a-tile-server-from-packages/
  2. 在Qt中我map.qml文件,我不得不包括在地圖插件以下參數(http://doc.qt.io/qt-5/location-plugin-osm.html):

    Plugin { 
        id: osmMapPlugin 
        name: "osm" 
    
        //provide the address of the tile server to the plugin 
        PluginParameter { 
         name: "osm.mapping.custom.host" 
         value: "http://localhost/osm/" 
        } 
    
        /*disable retrieval of the providers information from the remote repository. 
        If this parameter is not set to true (as shown here), then while offline, 
        network errors will be generated at run time*/ 
        PluginParameter { 
         name: "osm.mapping.providersrepository.disabled" 
         value: true 
        } 
    } 
    
  3. 最後的activeMapType財產地圖 QML類型必須設置爲MapType.CustomMaphttp://doc.qt.io/qt-5/qml-qtlocation-maptype.html),才能使地圖與本地磁貼服務器一起使用。

+0

您也可以出貨您自己的一套json提供程序定義與您的應用程序,設置osm.mapping.providersrepository.address。 與qt中的幾乎任何東西一樣,這個地址可以是http://以及file:///甚至qrc:/,因此您可以使用您的應用程序爲每種地圖類型發佈自定義地址 –