mysql 有一组经纬度 返回在某个区域内_Qt编写地图综合应用17-地址经纬度互转
## 一、前言
地址和經(jīng)緯度互相轉(zhuǎn)換的功能也經(jīng)常用到,比如上次的路線方案查詢的功能,之前官網(wǎng)是提供了直接輸入出發(fā)地點(diǎn)和目的地的中文漢字,就可以查詢到最優(yōu)的路線,后面只支持輸入出發(fā)地點(diǎn)和目的地的經(jīng)緯度坐標(biāo)了,這個(gè)就有點(diǎn)繞了,讓用戶輸入什么經(jīng)緯度坐標(biāo),那是個(gè)什么鬼?沒(méi)有幾個(gè)用戶搞得懂的,所以就需要先將用戶輸入的出發(fā)地點(diǎn)和目的地的中文漢字先查詢到對(duì)應(yīng)的經(jīng)緯度坐標(biāo),然后再傳入路線查詢的JS函數(shù)中查詢結(jié)果即可,為什么突然關(guān)閉了這個(gè)地址經(jīng)緯度自動(dòng)轉(zhuǎn)換的功能呢?我去后臺(tái)看了下,原來(lái)這項(xiàng)功能變成收費(fèi)模塊了。
地址經(jīng)緯度互換的功能只有在線地圖有,因?yàn)樾枰シ?wù)器查詢對(duì)應(yīng)的數(shù)據(jù),拿到返回的數(shù)據(jù),百度地圖中需要用到BMap.Geocoder來(lái)實(shí)現(xiàn)這兩個(gè)功能的互換,他內(nèi)置了getPoint函數(shù)負(fù)責(zé)將地址轉(zhuǎn)換為經(jīng)緯度坐標(biāo),getLocation函數(shù)負(fù)責(zé)將經(jīng)緯度坐標(biāo)轉(zhuǎn)為地址,于是將這兩個(gè)功能封裝成JS函數(shù),每次需要的時(shí)候直接調(diào)用即可。
## 二、功能特點(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è)置地圖是否可單擊、拖動(dòng)、鼠標(biāo)滾輪縮放。
5. 可設(shè)置協(xié)議版本、秘鑰、主題樣式、中心坐標(biāo)、中心城市、地理編碼位置等。
6. 可設(shè)置地圖縮放比例和級(jí)別,縮略圖、比例尺、路況信息等控件的可見(jiàn)。
7. 支持地圖交互,比如鼠標(biāo)按下獲取對(duì)應(yīng)位置的經(jīng)緯度。
8. 支持查詢路線,可設(shè)置起點(diǎn)位置、終點(diǎn)位置、路線模式、路線方式、路線方案(最少時(shí)間、最少換乘、最少步行、不乘地鐵、最短距離、避開高速)。
9. 可顯示點(diǎn)線面工具,可直接在地圖上劃線、點(diǎn)、矩形、圓形等。
10. 可設(shè)置行政區(qū)劃,指定某個(gè)城市區(qū)域繪制圖層,在線地圖自動(dòng)輸出行政區(qū)劃邊界點(diǎn)集合到j(luò)s文件給離線地圖使用。
11. 可靜態(tài)或者動(dòng)態(tài)添加多個(gè)覆蓋物。支持點(diǎn)、折線、多邊形、矩形、圓形、弧線、點(diǎn)聚合等。
12. 函數(shù)接口友好和統(tǒng)一,使用簡(jiǎn)單方便,就一個(gè)類。
13. 支持js動(dòng)態(tài)交互添加點(diǎn)、刪除點(diǎn)、清空點(diǎn)、重置點(diǎn),不需要刷新頁(yè)面。
14. 支持任意Qt版本、任意系統(tǒng)、任意編譯器。
## 三、體驗(yàn)地址
國(guó)內(nèi)站點(diǎn):[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
國(guó)際站點(diǎn):[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
## 四、效果圖
## 五、相關(guān)代碼
void MapBaiDu::addGeocoder(QStringList &list){ //地址解析成坐標(biāo)+坐標(biāo)解析成地址 list << QString(" var geo = new BMap.Geocoder();"); list << QString(" function getPointByAddr(addr) {"); list << QString(" geo.getPoint(addr, function(result) {"); list << QString(" if (result) {"); list << QString(" window.%1('geocoder', result.lng + "," + result.lat);").arg(callFun); list << QString(" }"); list << QString(" });"); list << QString(" }"); list << QString(" function getAddrByPoint(point) {"); list << QString(" var list = point.split(',');"); list << QString(" var pot = new BMap.Point(list[0], list[1]);"); list << QString(" geo.getLocation(pot, function(result) {"); list << QString(" if (result) {"); list << QString(" window.%1('geocoder', result.address);").arg(callFun); list << QString(" }"); list << QString(" });"); list << QString(" }");}void frmMapBaiDu::on_btnAddrToPoint_clicked(){ QString addr = ui->txtAddr->text().trimmed(); runJs(QString("getPointByAddr('%1')").arg(addr));}void frmMapBaiDu::on_btnPointToAddr_clicked(){ QString point = ui->txtPoint->text().trimmed(); runJs(QString("getAddrByPoint('%1')").arg(point));}總結(jié)
以上是生活随笔為你收集整理的mysql 有一组经纬度 返回在某个区域内_Qt编写地图综合应用17-地址经纬度互转的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机怎么允许用户安装文件,如何禁止安装
- 下一篇: sql 删除字段中下划线_SQL基础教程