Qt 5.7 및 대리석지도 위젯으로 앱을 제작 중이며 앱에 FAA 단면 차트를 표시해야합니다 (무료 다운로드 : https://www.faa.gov/air_traffic/flight_info/aeronav/digital_products/vfr/).). 이 차트는 GEO-TIFF 형식으로되어 있으며 올바르게 지리 정보로 참조됩니다.대리석지도는 반대 위도로 바둑판 식으로 배열 된 FAA 단면 차트를 보여줍니다.
대리석에서이 맵을 표시하는 첫 번째 단계는 타일로 변환하는 것입니다. gdaltranslate와 gdal2tiles.py를 사용하여이 작업을 수행하고 있습니다. 몬트리올 단면 차트에서 이러한 유틸리티를 실행 한 후이 폴더에 표시된 결과를 얻습니다 : http://flt.l5.ca/maps/sectionals.
차트가 Google지도 상단에 매우 정확하게 오버레이 될 수 있기 때문에 변환 프로세스가 성공적으로 수행 된 것 같습니다 (예 : http://flt.l5.ca/maps/sectionals/googlemaps.html).
대리석의지도를 표시하려면, 나는 다음과 같은 DGML 파일 생성 :
<?xml version="1.0" encoding="UTF-8"?>
<dgml xmlns="http://edu.kde.org/marble/dgml/2.0">
<document>
<head>
<license short="© FAA">© FAA</license>
<name>FAA Sectionals</name>
<target>earth</target>
<theme>sectionals</theme>
<icon pixmap="preview.png"/>
<visible>true</visible>
<description><![CDATA[<p>FAA Sectional Charts</p><p>FAA-provided sectional VFR charts for the USA.</p>]]></description>
<zoom>
<minimum> 900 </minimum>
<maximum> 3500 </maximum>
<discrete> true </discrete>
</zoom>
</head>
<map bgcolor="#000000">
<canvas/>
<target/>
<layer name="sectionals" backend="texture">
<texture name="faa_data" expire="604800">
<sourcedir format="PNG"> earth/sectionals </sourcedir>
<tileSize width="256" height="256"/>
<storageLayout levelZeroColumns="1" levelZeroRows="1" maximumTileLevel="19" mode="OpenStreetMap"/>
<projection name="Mercator"/>
<downloadUrl protocol="http" host="flt.l5.ca" path="/maps/sectionals"/>
</texture>
</layer>
</map>
<settings>
<property name="coordinate-grid">
<value>true</value>
<available>true</available>
</property>
<property name="overviewmap">
<value>true</value>
<available>true</available>
</property>
<property name="compass">
<value>true</value>
<available>true</available>
</property>
<property name="scalebar">
<value>true</value>
<available>true</available>
</property>
</settings>
</document>
</dgml>
지도는 대리석지도에 표시 않습니다,하지만 잘못된 반구에, 즉 대신의 상단에 표시되는 몬트리올 위도 45N 부근에서 남미에서는 같은 경도이지만 반대 위도 (45S)에 나타납니다.
Google지도와 같은 다른 매핑 서비스가 올바른 위치에 배치되면 어떻게 될 수 있습니까?
Qt의 MarbleWidget에지도를 표시하는 아주 간단한 코드가 아래에 포함되어 있습니다.
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "marble/MarbleWidget.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
Marble::MarbleWidget *mapWidget = ui->MarbleWidget;
mapWidget->setProjection(Marble::Mercator);
mapWidget->setMapThemeId(QStringLiteral("earth/sectionals/sectionals.dgml"));
mapWidget->setShowOverviewMap(false);
mapWidget->setShowScaleBar(false);
mapWidget->setShowCompass(false);
mapWidget->setMapQualityForViewContext(Marble::PrintQuality, Marble::Still);
mapWidget->setMapQualityForViewContext(Marble::LowQuality, Marble::Animation);
}
MainWindow::~MainWindow()
{
delete ui;
}