久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

Qt如何編寫地圖實現省市輪廓圖下載

這篇文章主要介紹“Qt如何編寫地圖實現省市輪廓圖下載”,在日常操作中,相信很多人在Qt如何編寫地圖實現省市輪廓圖下載問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Qt如何編寫地圖實現省市輪廓圖下載”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

專注于為中小企業提供成都網站設計、網站制作、外貿營銷網站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業準格爾免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了上1000家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。

一、前言

之前做獲取邊界點的時候,主要采用的是在線地圖的方式,因為在線地圖中直接內置了函數可以根據行政區域的名稱來自動獲取邊界,其實這些邊界就是一些點坐標集合連接起來的平滑線,然后形成的輪廓圖,這種方式有個弊端就是只能在線的時候使用,而我們大部分的應用場景應該是離線的,甚至很多設備永遠是離線的,根本不可能去聯網獲取信息,但是又想要這個各省市區域的輪廓圖怎辦呢,只能事先拿到下載到這些需要的輪廓圖文件才行,這些文件存儲的就是經緯度坐標集合,在離線地圖中只需要定義不規則線條繪制傳入這些經緯度坐標集合即可。

Qt的瀏覽器控件的交互機制非常方便,所以在在線地圖的時候可以對每個區域的經緯度坐標集合發給Qt程序,讓他去存儲到文件,在實際的測試過程中,發現有部分地圖有多個封閉的曲線的,比如散落的島嶼和飛地,這些可不能遺漏呢,所以存儲經緯度坐標信息,要按照數組的形式存儲,最開始做的時候按照一個字符串集合存儲的,后面發現部分地方少了甚至不規則,原來是有多個曲線集合,解析的時候根據數組來實例化不規則線條的類即可。

在線地圖默認只能精確到縣城,如果還要更精確的話,就需要自己手動調整邊界點拉動好,然后主動獲取當前邊界點的經緯度坐標集合,存儲起來,這就需要一開始設定一個基本的邊界點的形狀,開啟允許編輯屬性,然后自行去調整好位置,最后單擊獲取邊界點坐標,保存文件即可,如果需要很多的鄉鎮的輪廓圖,那只能很有耐心的慢慢的調整獲取咯,當然這種無聊的沒有技術含量的事情也可以交給小姑娘去做啦。

二、功能特點

  1. 同時支持在線地圖和離線地圖兩種模式。

  2. 同時支持webkit內核、webengine內核、IE內核。

  3. 支持設置多個標注點,信息包括名稱、地址、經緯度。

  4. 可設置地圖是否可單擊、拖動、鼠標滾輪縮放。

  5. 可設置協議版本、秘鑰、主題樣式、中心坐標、中心城市、地理編碼位置等。

  6. 可設置地圖縮放比例和級別,縮略圖、比例尺、路況信息等控件的可見。

  7. 支持地圖交互,比如鼠標按下獲取對應位置的經緯度。

  8. 支持查詢路線,可設置起點位置、終點位置、路線模式、路線方式、路線方案(最少時間、最少換乘、最少步行、不乘地鐵、最短距離、避開高速)。

  9. 可顯示點線面工具,可直接在地圖上劃線、點、矩形、圓形等。

  10. 可設置行政區劃,指定某個城市區域繪制圖層,在線地圖自動輸出行政區劃邊界點集合到js文件給離線地圖使用。

  11. 可靜態或者動態添加多個覆蓋物。支持點、折線、多邊形、矩形、圓形、弧線、點聚合等。

  12. 函數接口友好和統一,使用簡單方便,就一個類。

  13. 支持js動態交互添加點、刪除點、清空點、重置點,不需要刷新頁面。

  14. 支持任意Qt版本、任意系統、任意編譯器。

三、效果圖

Qt如何編寫地圖實現省市輪廓圖下載

四、相關代碼

QStringList MapBoundary::getResult(const QByteArray &data, quint8 type, const QString &provinceName, const QString &cityName)
{
    //處理數據
    QStringList result;
    if (type == 1 && provinceName.isEmpty()) {
        return result;
    } else if (type == 2 && (provinceName.isEmpty() || cityName.isEmpty())) {
        return result;
    }

#if (QT_VERSION > QT_VERSION_CHECK(5,0,0))
    //采用qt內置的json方法解析
    QJsonParseError error;
    QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error);
    if (error.error == QJsonParseError::NoError) {
        QJsonObject rootObj = jsonDoc.object();
        //qDebug() << rootObj.keys();

        if (rootObj.contains("province")) {
            QJsonArray province = rootObj.value("province").toArray();
            for (int i = 0; i < province.count(); i++) {
                QJsonObject subObj = province.at(i).toObject();
                if (subObj.contains("name")) {
                    QString name = subObj.value("name").toString();
                    if (type == 0) {
                        result << name;
                    } else if (type == 1) {
                        if (name == provinceName) {
                            QJsonArray city = subObj.value("city").toArray();
                            for (int j = 0; j < city.count(); j++) {
                                QJsonObject nodeObj = city.at(j).toObject();
                                if (nodeObj.contains("cityname")) {
                                    QString cityname = nodeObj.value("cityname").toString();
                                    result << cityname;
                                }
                            }

                            //退出查找
                            break;
                        }
                    } else if (type == 2) {
                        if (name == provinceName) {
                            bool exist = false;
                            QJsonArray city = subObj.value("city").toArray();
                            for (int j = 0; j < city.count(); j++) {
                                QJsonObject nodeObj = city.at(j).toObject();
                                if (nodeObj.contains("cityname")) {
                                    QString cityname = nodeObj.value("cityname").toString();
                                    if (cityname == cityName) {
                                        QJsonArray countyname = nodeObj.value("countyname").toArray();
                                        for (int k = 0; k < countyname.count(); k++) {
                                            QString county = countyname.at(k).toString();
                                            //數據中帶了縣城所在鎮,要過濾
                                            if (!county.endsWith("鎮")) {
                                                result << county;
                                            }
                                        }
                                        exist = true;
                                        break;
                                    }
                                }
                            }

                            //退出查找
                            if (exist) {
                                break;
                            }
                        }
                    }
                }
            }
        }
    }
#else
    //采用字符串分割方法解析
    QString temp = data;
    QStringList provice = temp.split("\n");
    QString name, cityname;
    for (int i = 0; i < provice.count(); i++) {
        QString value = provice.at(i);
        if (value.contains("\"name\"")) {
            name = getValue(value);
            if (type == 0) {
                result << name;
            }
        } else if (value.contains("\"cityname\"")) {
            cityname = getValue(value);
            bool exist = false;
            if (name == provinceName) {
                exist = true;
            }

            if (type == 1) {
                //檢測到是當前省份則來提取市區
                if (exist) {
                    result << cityname;
                    //當是新的省份以后立即退出
                    if (name != provinceName) {
                        break;
                    }
                }
            }
        } else if (value.contains("\"countyname\"")) {
            if (type == 2) {
                if (name == provinceName && cityname == cityName) {
                    QString county = getValue(value);
                    county = county.mid(1, county.length() - 2);
                    QStringList countys = county.split(" ");
                    foreach (QString county, countys) {
                        //數據中帶了縣城所在鎮,要過濾
                        if (!county.endsWith("鎮")) {
                            result << county;
                        }
                    }
                    break;
                }
            }
        }
    }
#endif
    return result;
}

到此,關于“Qt如何編寫地圖實現省市輪廓圖下載”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯網站,小編會繼續努力為大家帶來更多實用的文章!

文章名稱:Qt如何編寫地圖實現省市輪廓圖下載
網站地址:http://www.js-pz168.com/article26/gcjpcg.html

成都網站建設公司_創新互聯,為您提供定制網站網站建設面包屑導航App開發搜索引擎優化網站排名

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
日韩欧美国产麻豆| 国产精品你懂的在线| 国产精品色眯眯| 午夜精品成人在线视频| 成人一区二区三区在线观看| 国产伦精品一区二区三区免| 91福利视频久久久久| 国产亚洲午夜高清国产拍精品| 亚洲国产综合色| 成人网在线播放| 日韩中文不卡| 日韩欧美一区二区久久婷婷| 一区二区三区电影在线播| 国产精品一区二区男女羞羞无遮挡| 国产一级二级三级精品| 欧洲生活片亚洲生活在线观看| 国产欧美日韩亚州综合| 日韩国产高清影视| 99免费在线观看视频| 色爱区综合激月婷婷| 日本一区二区三区在线不卡| 日韩av高清在线观看| 国产精品免费区二区三区观看 | 国产精品久久久一区麻豆最新章节| 日韩av成人高清| 痴汉一区二区三区| 欧美日韩高清一区二区不卡| 亚洲日本在线天堂| 国产白丝网站精品污在线入口| 日韩免费电影一区二区| www国产精品av| 蜜桃在线一区二区三区| 激情欧美一区二区三区中文字幕| 在线电影国产精品| 亚洲综合视频在线观看| 91在线观看高清| 精品视频1区2区3区| 亚洲精品一二三| 99精品视频一区二区| 在线免费观看日韩欧美| 亚洲人成在线观看一区二区| 成人h版在线观看| 色婷婷久久久亚洲一区二区三区| 国产精品久久久久一区| 成人精品国产一区二区4080| 一本久久a久久精品亚洲| 日韩美女视频一区二区 | 国精产品一区二区| 日韩女优制服丝袜电影| 日本欧美一区二区三区乱码| 九九九九九九精品| 亚洲精品在线观| 国内不卡的二区三区中文字幕 | 亚洲午夜精品一区二区三区他趣| 99精品久久只有精品| 欧美日韩国产综合一区二区| 亚洲国产精品自拍| 国产日韩在线一区二区三区| 欧美mv和日韩mv国产网站| 久久99精品久久久久| 婷婷亚洲婷婷综合色香五月| 国产精品久久一卡二卡| 97久久精品人人做人人爽50路| 欧美三级午夜理伦三级中视频| 亚洲国产欧美另类丝袜| 韩国成人一区| 久久久久国产精品麻豆ai换脸| 国产麻豆精品在线| 伊人色综合久久天天五月婷| 亚洲精品免费在线| 国产乱码一区| 国产欧美日韩三区| 99r国产精品| 日韩欧美综合在线| 国产一区二区三区电影在线观看 | 日本美女一区二区三区| 欧美自拍资源在线| 中文字幕视频一区二区三区久| 91在线国产福利| 精品1区2区在线观看| 国产**成人网毛片九色| 制服视频三区第一页精品| 久99久精品视频免费观看| 色先锋久久av资源部| 午夜激情久久久| 五月天综合网| 亚洲午夜精品网| 色99中文字幕| 亚洲国产三级在线| 日本一区二区在线| 亚洲卡通动漫在线| 欧美国产一二三区| 亚洲欧洲中文日韩久久av乱码| 国产偷久久久精品专区| 中文成人av在线| 国产精品xxxx| 国产精品电影院| 极品校花啪啪激情久久| 中文字幕一区二区三区在线观看| 国产精品露出视频| 中文字幕色av一区二区三区| 久久99久久精品国产| 亚洲视频电影在线| 久久亚洲综合网| 亚洲精品亚洲人成人网| 青青草国产精品| 亚洲一二三区在线观看| 亚洲一卡二卡三卡四卡无卡网站在线看| 亚洲成人先锋电影| 永久久久久久| 麻豆国产91在线播放| 欧美日韩一区成人| 国产成人精品免费网站| 日韩区在线观看| 91在线观看成人| 国产精品每日更新| 免费不卡亚洲欧美| 亚洲成人免费影院| 色先锋aa成人| 国产麻豆成人精品| 欧美大片日本大片免费观看| 91小视频在线免费看| 国产精品久久久久久一区二区三区 | 欧美精品色综合| 成人黄色网址在线观看| 国产性做久久久久久| 激情欧美一区二区三区中文字幕| 亚洲欧美电影一区二区| 亚洲精品一区二区毛豆| 老司机午夜精品| 欧美一区三区四区| 99porn视频在线| 亚洲女人****多毛耸耸8| 一区二区三区av在线| 激情成人综合网| 精品国产区一区| 国产亚洲一区在线播放 | 久久午夜羞羞影院免费观看| 国产精品美女黄网| 亚洲一卡二卡三卡四卡| 在线免费一区三区| 成人av网址在线| 亚洲国产精品v| 亚洲国产精品123| 激情国产一区二区| 久久久久国产成人精品亚洲午夜 | 中文字幕在线免费不卡| 亚洲综合av一区| 国产福利一区二区| 欧美高清一级片在线观看| 日韩wuma| 国内精品久久久久影院色| 蜜桃精品久久久久久久免费影院| 午夜视频久久久久久| 在线播放日韩导航| 国产经典一区二区三区| 亚洲第一在线综合网站| 6080午夜不卡| 国产精品视频入口| 婷婷久久综合九色综合伊人色| 91麻豆精品国产| 国内外成人免费视频| 秋霞午夜鲁丝一区二区老狼| 精品久久久久久久人人人人传媒 | 日韩精品一级中文字幕精品视频免费观看 | 欧美一区二区二区| 国产高清在线精品一区二区三区| 亚洲国产成人porn| 欧美一级欧美三级| 久久99精品久久久久久秒播放器| 日本三级韩国三级欧美三级| 精品乱人伦一区二区三区| 鲁片一区二区三区| 韩国女主播成人在线| 国产精品欧美久久久久一区二区| 中文字幕一区综合| 成人av电影在线观看| 一区二区三区蜜桃| 这里只有精品视频在线观看| 久久国产精品99久久久久久丝袜| 蜜桃av噜噜一区二区三区小说| 久久久天堂av| 亚洲一区高清| 99vv1com这只有精品| 婷婷中文字幕一区三区| 久久中文字幕电影| 亚洲欧洲精品一区二区三区波多野1战4 | 国产麻豆日韩欧美久久| 日韩伦理免费电影| 欧美猛男男办公室激情| 久久99精品久久久久久青青日本 | 美女网站色91| 日本一区二区三区免费乱视频| 色婷婷精品久久二区二区蜜臂av| 91视频最新| 六月丁香婷婷色狠狠久久| 国产精品美日韩| 欧美精品一二三| 日韩精品欧美在线| 99精品偷自拍|