SkeyeGisMap开发文档(一)

175 阅读2分钟

1、项目案例

    SkeyeARS 中的场面监视即实现在 SkeyeGisMap 之上。

   1(改).png

   欢迎免费使用体验 SkeyeARS : www.openskeye.cn/web/product…

2、环境准备

操作系统:Windows7 及以上   
开发环境: Qt 5.12 及以上  

3、下载 SkeyeGisMap SDK

 - 下载地图核心及相关示例:

   地址:gitee.com/visual-open…

 - 开发库结构说明

    2.png

  - buildlib SkeyeGisMap 库文件目录(动态库)

  - include SkeyeGisMap 头文件目录

  - example SkeyeGisMap 相关例子

  - coremap.pri 为 qmake 的预包含文件, 当使用 qmake 进行项目管理时可用

4、开始使用

   这里我以 coremap/example/start-map 进行说明。

   我的编译环境为 MSVC 2019 64bit

   首先打开 coremap/example/example.pro, 这是一个子目录项目, 现在先将 start-map 设置为运行项目。

   start-map 结构很简单:

QT += quick  
              
include($$PWD/../../coremap.pri)  
              
SOURCES += \  
    main.cpp  
      
RESOURCES += qml.qrc  

   直接包含前面的 coremap.pri 即可自动引入依赖。

   接着 main 函数也相当简单:

#include <QGuiApplication>  
#include <QQmlApplicationEngine>  
#include <QQuickWindow>  
  
#include <CoreMapItem>  
#include <CoordinateReference>  
  
int main(int argc, char *argv[])  
{  
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)  
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);  
#endif  
    QQuickWindow::setSceneGraphBackend(QSGRendererInterface::OpenGL);  
    QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL);  
  
    QGuiApplication app(argc, argv);  
  
    auto defaultFormat = QSurfaceFormat::defaultFormat();  
    defaultFormat.setSamples(8);  
    QSurfaceFormat::setDefaultFormat(defaultFormat);  
  
    MapItem::activate("73676D79655969576B5A75416A31426A6E4B3768362F4A7A64"  
                      "47467964433174595841755A58686C567778576F4846723445"  
                      "6468646D6C754A6B4A68596D397A595541794D444532525746"  
                      "7A65555268636E6470626C526C5957316C59584E35");  
    CoordinateReference::setProjDatabaseFile("./../../proj/proj.db");  
  
    QQmlApplicationEngine engine;  
    const QUrl url(QStringLiteral("qrc:/main.qml"));  
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,  
                     &app, [url](QObject *obj, const QUrl &objUrl) {  
        if (!obj && url == objUrl)  
            QCoreApplication::exit(-1);  
    }, Qt::QueuedConnection);  
    engine.load(url);  
  
    return app.exec();  
}  

   其中:

   MapItem::activate(const QString &) 用于激活 SDK。

   CoordinateReference::setProjDatabaseFile(const QString &) 用于设置投影数据库。

   最后在 main.qml 创建 MapItem 即可: 

import QtQuick 2.15  
import QtQuick.Window 2.15  
  
import skeye.map 1.0  
  
Window {  
    width: 640  
    height: 480  
    visible: true  
  
    MapItem {  
        anchors.fill: parent  
        loadSource: "../../map_source/mapstyles/load_config.json"  
    }  
}  
  

   其中:

   loadSource: string 用于设置地图的载入配置, 这类文件的生成需要使用我们的地图样式编辑器(开源):

   地址: gitee.com/visual-open…

   而 mapstyleeditor 后面将会进行详细说明。

   start-map 效果图展示(中国地图):

   3.png