Qt動態(tài)如何添加

本篇內(nèi)容主要講解“Qt動態(tài)如何添加”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Qt動態(tài)如何添加”吧!

創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為蘆淞等服務(wù)建站,蘆淞等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為蘆淞企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

一、前言

在添加設(shè)備點(diǎn)或者區(qū)域形狀的時(shí)候,會考慮是直接靜態(tài)的方式寫入到網(wǎng)頁中加載,還是動態(tài)js函數(shù)異步加載的方式,這個(gè)需要根據(jù)現(xiàn)場的實(shí)際需求來,如果只需要一次加載的話建議靜態(tài)即可,如果運(yùn)行期間還需要動態(tài)添加的話就采用動態(tài)的js函數(shù)交互的方法,絕大部分場景都是動態(tài)添加,畢竟這個(gè)是異步執(zhí)行的,而且比較靈活,靜態(tài)的方式寫入到網(wǎng)頁中加載開起來比較傻,數(shù)據(jù)都在網(wǎng)頁中可以看到了,沒有什么保密性可言,在前面兩篇文章做行政區(qū)劃和點(diǎn)聚合的時(shí)候,也是兩種方法都支持,具體現(xiàn)場怎么方便怎么來。

動態(tài)添加的話,相當(dāng)于要把官網(wǎng)那些demo,都做成js函數(shù)調(diào)用的形式,官網(wǎng)的那些demo主要都是以靜態(tài)寫死的方式作為演示的,為了更直觀更容易理解,如果是Qt程序員或者c++的程序,需要花一丟丟時(shí)間才能學(xué)會如何將其封裝成js函數(shù)調(diào)用,畢竟在js中沒有數(shù)據(jù)類型的概念,統(tǒng)一都是var,相當(dāng)于Qt中的QVariant類型,所謂萬物皆var,數(shù)組和數(shù)組對象直接用[]搞定,著實(shí)相當(dāng)方便。

二、功能特點(diǎn)

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

  2. 同時(shí)支持webkit內(nèi)核、webengine內(nèi)核、IE內(nèi)核。

  3. 支持設(shè)置多個(gè)標(biāo)注點(diǎn),信息包括名稱、地址、經(jīng)緯度。

  4. 可設(shè)置地圖是否可單擊、拖動、鼠標(biāo)滾輪縮放。

  5. 可設(shè)置協(xié)議版本、秘鑰、主題樣式、中心坐標(biāo)、中心城市、地理編碼位置等。

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

  7. 支持地圖交互,比如鼠標(biāo)按下獲取對應(yīng)位置的經(jīng)緯度。

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

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

  10. 可設(shè)置行政區(qū)劃,指定某個(gè)城市區(qū)域繪制圖層,在線地圖自動輸出行政區(qū)劃邊界點(diǎn)集合到j(luò)s文件給離線地圖使用。

  11. 可靜態(tài)或者動態(tài)添加多個(gè)覆蓋物。支持點(diǎn)、折線、多邊形、矩形、圓形、弧線、點(diǎn)聚合等。

  12. 函數(shù)接口友好和統(tǒng)一,使用簡單方便,就一個(gè)類。

  13. 支持js動態(tài)交互添加點(diǎn)、刪除點(diǎn)、清空點(diǎn)、重置點(diǎn),不需要刷新頁面。

  14. 支持任意Qt版本、任意系統(tǒng)、任意編譯器。

三、效果圖

Qt動態(tài)如何添加

四、相關(guān)代碼

void MapBaiDu::addPolyline(QStringList &list)
{
    //覆蓋物通用屬性,包括顏色線條粗細(xì)等,可以自行更改
    QString property = getOverlayProperty();

    //動態(tài)添加折線
    list << QString("  function addPolyline(points) {");
    list << QString("    var pts = getPoints(points);");
    list << QString("    var polyline = new BMap.Polyline(pts, %1);").arg(property);
    list << QString("    map.addOverlay(polyline);");
    list << QString("  }");
}

void MapBaiDu::addPolygon(QStringList &list)
{
    //覆蓋物通用屬性,包括顏色線條粗細(xì)等,可以自行更改
    QString property = getOverlayProperty();

    //動態(tài)添加多邊形
    list << QString("  function addPolygon(points) {");
    list << QString("    var pts = getPoints(points);");
    list << QString("    var polygon = new BMap.Polygon(pts, %1);").arg(property);
    list << QString("    map.addOverlay(polygon);");
    list << QString("  }");
}

void MapBaiDu::addRectangle(QStringList &list)
{
    //覆蓋物通用屬性,包括顏色線條粗細(xì)等,可以自行更改
    QString property = getOverlayProperty();

    //動態(tài)添加矩形
    list << QString("  function addRectangle(points) {");
    list << QString("    var listPoint = points.split(\"|\");");
    list << QString("    if (listPoint.length != 2) {");
    list << QString("      return;");
    list << QString("    }");

    //將兩個(gè)坐標(biāo)拆分成四個(gè)點(diǎn)
    list << QString("    var list1 = listPoint[0].split(\",\");");
    list << QString("    var list2 = listPoint[1].split(\",\");");
    list << QString("    var ptStart = new BMap.Point(list1[0], list1[1]);");
    list << QString("    var ptEnd = new BMap.Point(list2[0], list2[1]);");
    list << QString("    var pt1 = new BMap.Point(ptStart.lng, ptStart.lat);");
    list << QString("    var pt2 = new BMap.Point(ptEnd.lng, ptStart.lat);");
    list << QString("    var pt3 = new BMap.Point(ptEnd.lng, ptEnd.lat);");
    list << QString("    var pt4 = new BMap.Point(ptStart.lng, ptEnd.lat);");
    list << QString("    var rectangle = new BMap.Polygon([pt1,pt2,pt3,pt4], %1);").arg(property);
    list << QString("    map.addOverlay(rectangle);");
    list << QString("  }");
}

void MapBaiDu::addCircle(QStringList &list)
{
    //覆蓋物通用屬性,包括顏色線條粗細(xì)等,可以自行更改
    QString property = getOverlayProperty();

    //動態(tài)添加圓形
    list << QString("  function addCircle(points, radius) {");
    list << QString("    var listPoint = points.split(\"|\");");
    list << QString("    var list = listPoint[0].split(\",\");");
    list << QString("    var ptCenter = new BMap.Point(list[0], list[1]);");
    list << QString("    var circle = new BMap.Circle(ptCenter, radius, %1);").arg(property);
    list << QString("    map.addOverlay(circle);");
    list << QString("  }");
}

到此,相信大家對“Qt動態(tài)如何添加”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

網(wǎng)頁題目:Qt動態(tài)如何添加
標(biāo)題網(wǎng)址:http://bm7419.com/article38/gijgpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、虛擬主機(jī)、ChatGPT、品牌網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、用戶體驗(yàn)

廣告

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

搜索引擎優(yōu)化