最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Qt/C++實現WGS84,高德GCJ-02與百度BD-09坐標系間相互轉化

 更新時間:2023年07月04日 11:38:24   作者:喵喵叫的猴  
這篇文章主要為大家詳細介紹了如何使用Qt實現WGS84、高德GCJ-02與百度BD-09坐標系間相互轉化,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

在做地圖相關開發(fā)時候,繞不開不同坐標系間的轉化,因此我根據查閱相關資料后將不同坐標系間的轉換封裝到一個GeoTranslate類中,該類轉換函數不僅支持Qt/C++調用,同時可在QML中直接調用,配合上QML/Map很方便,我將該類做了個Demo,方便使用者使用,效果如圖:

在QML的地圖Map中使用高德的路徑規(guī)劃的效果:

使用方法為將 GeoTranslate類添加到工程中,調用轉換函數即可

geotranslate.h:

#ifndef GEOTRANSLATE_H
#define GEOTRANSLATE_H
#include <QtMath>
#include <QObject>
#include <QGeoCoordinate>
class GeoTranslate : public QObject
{
public:
    explicit GeoTranslate(QObject *parent = nullptr);
    static constexpr double pi = 3.14159265358979323846;
    static constexpr double a = 6378245.0;
    static constexpr double ee = 0.00669342162296594323;
    Q_INVOKABLE static QGeoCoordinate wgs84ToGcj02(QGeoCoordinate coordinate);
    Q_INVOKABLE static QGeoCoordinate gcj02ToWgs84(QGeoCoordinate coordinate);
    Q_INVOKABLE static QGeoCoordinate wgs84ToGcj02(double lat,double lon);
    Q_INVOKABLE static QGeoCoordinate gcj02ToWgs84(double lat,double lon);
    Q_INVOKABLE static QGeoCoordinate gcj02ToBd09(QGeoCoordinate coordinate);
    Q_INVOKABLE static QGeoCoordinate bd09ToGcj02(QGeoCoordinate coordinate);
    Q_INVOKABLE static QGeoCoordinate gcj02ToBd09(double gg_lat, double gg_lon);
    Q_INVOKABLE static QGeoCoordinate bd09ToGcj02(double bd_lat,double bd_lon);
private:
    static double transformLat(double x,double y);
    static double transformLon(double x,double y);
    static bool outOfChina(double lat,double lon);
    static QGeoCoordinate transform(double lat,double lon);
};
#endif // GEOTRANSLATE_H

調用方法:

void Widget::on_pushButton_1_clicked()
{
    QGeoCoordinate wgs(ui->lineEditLa_1->text().toDouble(),ui->lineEditLo_1->text().toDouble());
    QGeoCoordinate gcj02 = GeoTranslate::wgs84ToGcj02(wgs);
    ui->lineEditLa_2->setText(QString::number(gcj02.latitude()));
    ui->lineEditLo_2->setText(QString::number(gcj02.longitude()));
}
void Widget::on_pushButton_2_clicked()
{
    QGeoCoordinate gcj02(ui->lineEditLa_3->text().toDouble(),ui->lineEditLo_3->text().toDouble());
    QGeoCoordinate wgs = GeoTranslate::gcj02ToWgs84(gcj02);
    ui->lineEditLa_4->setText(QString::number(wgs.latitude()));
    ui->lineEditLo_4->setText(QString::number(wgs.longitude()));
}
void Widget::on_pushButton_3_clicked()
{
    QGeoCoordinate gcj02(ui->lineEditLa_5->text().toDouble(),ui->lineEditLo_5->text().toDouble());
    QGeoCoordinate bd09 = GeoTranslate::gcj02ToBd09(gcj02);
    ui->lineEditLa_6->setText(QString::number(bd09.latitude()));
    ui->lineEditLo_6->setText(QString::number(bd09.longitude()));
}
void Widget::on_pushButton_4_clicked()
{
    QGeoCoordinate bd09(ui->lineEditLa_7->text().toDouble(),ui->lineEditLo_7->text().toDouble());
    QGeoCoordinate gcj02 = GeoTranslate::bd09ToGcj02(bd09);
    ui->lineEditLa_8->setText(QString::number(gcj02.latitude()));
    ui->lineEditLo_8->setText(QString::number(gcj02.longitude()));
}
 

以上就是使用Qt/C++實現WGS84,高德GCJ-02與百度BD-09坐標系間相互轉化的詳細內容,更多關于Qt坐標系轉化的資料請關注腳本之家其它相關文章!

相關文章

  • C++?this原理與可變參數及友元函數友元類分步詳解用法

    C++?this原理與可變參數及友元函數友元類分步詳解用法

    可變參數模板(variadic?templates)是C++11新增的強大的特性之一,它對模板參數進行了高度泛化,能表示0到任意個數、任意類型的參數,這篇文章主要介紹了C++?this原理與可變參數及友元函數友元類
    2022-11-11
  • C++ inline內聯(lián)函數詳解

    C++ inline內聯(lián)函數詳解

    這篇文章主要介紹了C++ inline內聯(lián)函數詳解,有感興趣的同學可以借鑒參考下
    2021-02-02
  • C++?STL中五個常用算法使用教程及實例講解

    C++?STL中五個常用算法使用教程及實例講解

    本文主要介紹了C++?STL算法中常見的五個算法的使用教程并附上了案例詳解,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • C語言輸出孿生素數的實現示例

    C語言輸出孿生素數的實現示例

    本文主要介紹了C語言輸出孿生素數的實現示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 關于C語言strlen與sizeof區(qū)別詳情

    關于C語言strlen與sizeof區(qū)別詳情

    對于 strlen 和 sizeof,相信不少程序員會混淆其功能。雖然從表面上看它們都可以求字符串的長度,但二者卻存在著許多不同之處及本質區(qū)別,今天得這篇文章我們就來學習C語言strlen與sizeof區(qū)別的相關資料,需要的朋友可以參考一下
    2021-10-10
  • C++中產生臨時對象的情況及其解決方案

    C++中產生臨時對象的情況及其解決方案

    這篇文章主要介紹了C++中產生臨時對象的情況及其解決方案,以值傳遞的方式給函數傳參,類型轉換以及函數需要返回對象時,并給對應給出了詳細的解決方案,通過圖文結合的方式講解的非常詳細,需要的朋友可以參考下
    2024-05-05
  • C++函數指針與指針函數有哪些關系和區(qū)別

    C++函數指針與指針函數有哪些關系和區(qū)別

    函數指針是一個指針變量,它可以存儲函數的地址,然后使用函數指針,這篇文章主要介紹了C++中函數指針與指針函數有哪些關系和區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值
    2022-08-08
  • Qt連接數據庫并實現數據庫增刪改查的圖文教程

    Qt連接數據庫并實現數據庫增刪改查的圖文教程

    QT連接數據庫是應用開發(fā)的常用基礎操作,經過實驗我總結了一些例程,下面這篇文章主要給大家介紹了關于Qt連接數據庫并實現數據庫增刪改查的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • C++ float、double判斷是否等于0問題

    C++ float、double判斷是否等于0問題

    這篇文章主要介紹了C++ float、double判斷是否等于0問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 詳解C++中函數模板的定義與使用

    詳解C++中函數模板的定義與使用

    函數模板實質就是參數化數據類型,稱這種編程模式為數據類型泛化編程。本文將通過示例來和大家一起了解下C++中函數模板的定義與使用,需要的可以參考一下
    2022-09-09

最新評論

拉萨市| 南投市| 沂水县| 房山区| 隆林| 奎屯市| 清流县| 松滋市| 渭源县| 逊克县| 龙陵县| 石柱| 三江| 叙永县| 永靖县| 华安县| 宁明县| 团风县| 乌兰浩特市| 合山市| 岚皋县| 泰安市| 湘潭市| 吴江市| 新和县| 张北县| 张掖市| 穆棱市| 伊宁县| 阿瓦提县| 河源市| 丰镇市| 闽清县| 古浪县| 宁安市| 孟津县| 固镇县| 绥滨县| 滁州市| 苍梧县| 方正县|