QT編寫地圖實現(xiàn)離線輪廓圖的示例代碼_第1頁
QT編寫地圖實現(xiàn)離線輪廓圖的示例代碼_第2頁
QT編寫地圖實現(xiàn)離線輪廓圖的示例代碼_第3頁
QT編寫地圖實現(xiàn)離線輪廓圖的示例代碼_第4頁
QT編寫地圖實現(xiàn)離線輪廓圖的示例代碼_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第QT編寫地圖實現(xiàn)離線輪廓圖的示例代碼目錄一、前言二、功能特點三、體驗地址四、效果圖五、相關代碼

一、前言

離線輪廓圖使用起來,就沒有在線輪廓圖方便了,在線的可以直接傳入名稱拿到,離線的只能自己繪制了,一般需要用區(qū)域輪廓圖下載器將你需要的區(qū)域下載好對應的js文件,其實就是一堆坐標點集合數組,這些數據可以在有網絡的地方的時候下載好,也可以在地圖上通過繪制不規(guī)則的多邊形區(qū)域得到,只要你熟知該區(qū)域的輪廓。

離線輪廓圖的加載首先引入該區(qū)域的坐標點數組js文件,然后通過讀取該文件的數據傳入自定義的addBoundary函數進行繪制,還可以設置顏色、粗細、透明度等。

二、功能特點

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

同時支持webkit內核、webengine內核、miniblink內核、IE內核。

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

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

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

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

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

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

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

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

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

提供函數接口處理經緯度解析成地址和地址解析成經緯度坐標。

提供的demo直接可以單獨選點執(zhí)行對應的處理比如路線查詢。

可以拿到路線查詢到的點坐標信息集合,比如用于機器人坐標導航等。

封裝了豐富的函數比如刪除指定點和所有點,刪除指定覆蓋物和所有覆蓋物等。

標注點彈框信息可以自定義內容,標準html格式。

標注點單擊事件可選0-不處理1-自己彈框2-發(fā)送信號。

標注點可設置動畫效果0-不處理1-跳動2-墜落

標注點可設置本地圖片文件等。

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

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

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

三、體驗地址

體驗地址:/s/1ZxG-oyUKe286LPMPxOrO2A提取碼:o05q文件名:bin_map.zip

國內站點:/feiyangqingyun

國際站點:/feiyangqingyun

四、效果圖

五、相關代碼

voidMapBaiDu::addOverlay(QStringListlist)

if(overlayTypes.count()==0||overlayTypes.count()!=overlayPoints.count()){

return;

//判斷不同的類型,添加多個覆蓋物

intcount=overlayTypes.count();

for(inti=0;icount;++i){

OverlayTypetype=overlayTypes.at(i);

QStringListpoints=overlayPoints.at(i);

QStringproperty=getOverlayProperty();

//為了支持多個覆蓋物,每個覆蓋物對應的變量名都不一樣

QStringname;

if(type==OverlayType_Marker){

name=QString("marker%1").arg(i+1);

listQString("var%2=new%1.Marker(new%1.Point(%3));").arg(mapFlag).arg(name).arg(points.at(0));

}elseif(type==OverlayType_Polyline){

//每個圖形都有點集合

QStringListlistPoints;

foreach(QStringpoint,points){

listPointsQString("new%1.Point(%2)").arg(mapFlag).arg(point);

name=QString("polyline%1").arg(i+1);

listQString("var%2=new%1.Polyline([%3],%4);").arg(mapFlag).arg(name).arg(listPoints.join(",")).arg(property);

}elseif(type==OverlayType_Polygon){

//每個圖形都有點集合

QStringListlistPoints;

foreach(QStringpoint,points){

listPointsQString("new%1.Point(%2)").arg(mapFlag).arg(point);

name=QString("polygon%1").arg(i+1);

listQString("var%2=new%1.Polygon([%3],%4);").arg(mapFlag).arg(name).arg(listPoints.join(",")).arg(property);

}elseif(type==OverlayType_Rectangle){

if(points.count()2){

continue;

name=QString("rectangle%1").arg(i+1);

QStringptStart=QString("pStart%1").arg(i+1);

QStringptEnd=QString("pEnd%1").arg(i+1);

listQString("var%2=new%1.Point(%3);").arg(mapFlag).arg(ptStart).arg(points.at(0));

listQString("var%2=new%1.Point(%3);").arg(mapFlag).arg(ptEnd).arg(points.at(1));

listQString("var%2=new%1.Polygon([").arg(mapFlag).arg(name);

listQString("new%1.Point(%2.lng,%3.lat),").arg(mapFlag).arg(ptStart).arg(ptStart);

listQString("new%1.Point(%2.lng,%3.lat),").arg(mapFlag).arg(ptEnd).arg(ptStart);

listQString("new%1.Point(%2.lng,%3.lat),").arg(mapFlag).arg(ptEnd).arg(ptEnd);

listQString("new%1.Point(%2.lng,%3.lat)").arg(mapFlag).arg(ptStart).arg(ptEnd);

listQString("],%1);").arg(property);

}elseif(type==OverlayType_Circle){

if(points.count()2){

continue;

//取第二個值作為半徑

intcircleRadius=points.at(1).toInt();

name=QString("circle%1").arg(i+1);

listQString("varpoint%2=new%1.Point(%3);").arg(mapFlag).arg(i+1).arg(points.at(0));

listQString("var%2=new%1.Circle(point%3,%4,%5);").arg(mapFlag).arg(name).arg(i+1).arg(circleRadius).arg(property);

}elseif(type==OverlayType_CurveLine){

//弧形點集合

QStringListlistPoints;

foreach(QStringpoint,points){

listPointsQString("new%1.Point(%2)").arg(mapFlag).arg(point);

name=QString("curveline%1").arg(i+1);

listQString("varpoints%1=[%2];").arg(i+1).arg(listPoints.join(","));

listQString("var%2=new%1Lib.CurveLine(points%3,%4);").arg(mapFlag).arg(name).arg(i+1).arg(property);

}elseif(type==OverlayType_Boundary){

//離線地圖從本地加載行政區(qū)劃邊界點集合

if(mapLocal){

//可能會有多個數據,比如臺灣的金門島,都是獨立的區(qū)域形狀

//這個boundarys通過最上面js文件引入產生的變量

listQString("varpointArray=[];");

listQString("varcount=boundarys.length;");

listQString("for(vari=0;icount;++i){");

listQString("varply=new%1.Polygon(boundarys[i].points,%2);").arg(mapFlag).arg(property);

listQString("map.addOverlay(ply);");

listQString("pointArray=pointArray.concat(ply.getPath());");

listQString("}");

//調整視野自適應行政區(qū)劃區(qū)域

listQString("map.setViewport(pointArray);");

}else{

listQString("varbdary=new%1.Boundary();").arg(mapFlag);

//獲取行政區(qū)域

listQString("bdary.get(\"%1\",function(rs){").arg(points.first());

//清除地圖覆蓋物

listQString("map.clearOverlays();");

//行政區(qū)域的點有多少個

listQString("vardatas=rs.boundaries;");

listQString("varcount=datas.length;");

listQString("if(count=0){");

listQString("return;");

listQString("}");

listQString("varpointsAll=[];");

listQString("varpointArray=[];");

listQString("for(vari=0;icount;++i){");

//建立多邊形覆蓋物

listQString("varply=new%1.Polygon(datas[i],%2);").arg(mapFlag).arg(property);

//取出點集合

listQString("varpts=ply.getPath();");

listQString("varpoints=[];");

listQString("for(varj=0;jpts.length;++j){");

listQString("varpoint=pts[j].lng+','+pts[j].lat;");

listQString("points.push(point);");

listQString("}");

listQString("pointsAll.push(points.join(';'));");

//范圍可編輯,開啟以后可以拖動邊界然后可以重新輸出邊界點集合

//listQString("ply.enableEditing();");

//添加覆蓋物

listQString("map.addOverlay(ply);");

listQString("pointArray=pointArray.concat(ply.getPath());");

listQString("}");

//調整視野自適應行政區(qū)劃區(qū)域

listQString("map.setViewport(pointArray);");

//彈出+調試輸出+回調輸出行政區(qū)劃的邊界坐標點集合

//listQString("alert(count);");

//listQString("alert(datas);");

//listQString("console.log(datas);");

listQString("receiveData('boundary',pointsAll.join('|'));");

listQString("});");

}elseif(type==OverlayType_MarkerClusterer){

//點集合

QStringListlistPoints;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論