vue整合項(xiàng)目中百度API示例詳解
官網(wǎng)介紹
- 百度地圖 JavaScript API 是一套由 JavaScript 語言編寫的應(yīng)用程序接口
- 可幫助您在網(wǎng)站中,構(gòu)建功能豐富交互性強(qiáng)的地圖應(yīng)用
- 支持PC端和移動(dòng)端,基于瀏覽器的地圖應(yīng)用開發(fā),且支持HTML5特性的地圖開發(fā)
?? 官網(wǎng)傳送門
百度地圖JavaScript API支持HTTP和HTTPS,免費(fèi)對(duì)外開放,可直接使用。接口使用無次數(shù)限制。在使用前,需要先申請(qǐng)密鑰(ak)才可以使用。
申請(qǐng)密鑰
應(yīng)用管理 -- 我的應(yīng)用 -- 創(chuàng)建應(yīng)用
創(chuàng)建成功之后,如上圖所示。
應(yīng)用名稱 -- 百度地圖,訪問應(yīng)用(AK) 就是需要的密鑰。
官方示例
項(xiàng)目實(shí)戰(zhàn)
創(chuàng)建地圖
看一下官方demo就知道該怎么用了。
在頁面中,使用 script 標(biāo)簽引入
<!-- ak需要替換成自己的 --> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密鑰"></script>
獲取經(jīng)緯度
搜索欄,輸入地理位置,選擇結(jié)果,在右上角復(fù)制當(dāng)前坐標(biāo)點(diǎn),即可獲取經(jīng)緯度。
創(chuàng)建Map實(shí)例
html 部分
<template> <div id="map"></div> </template>
js 部分
const map = new BMap.Map("map"); // 創(chuàng)建Map實(shí)例 // 經(jīng)度 let longt = 112.986422; // 緯度 let lat = 28.197448; //設(shè)置地圖中心位置和縮放 map.centerAndZoom(new BMap.Point(longt, lat), 1200); map.enableScrollWheelZoom(false); //鼠標(biāo)滾輪縮放 //設(shè)置標(biāo)注的經(jīng)緯度 const marker = new BMap.Marker(new BMap.Point(112.984, 28.198133)); //把標(biāo)注添加到地圖上 map.addOverlay(marker);
頁面顯示效果如下:
兩個(gè)坐標(biāo)點(diǎn)之間的距離
const map = new BMap.Map(''); const pointA = new BMap.Point(113.364873,23.115797); const pointB = new BMap.Point(113.364052, 23.115028); var distance = (map.getDistance(pointA, pointB)); console.log(distance); // 單位 米
查詢地點(diǎn)信息
舉例說明 -- 橘子洲頭
//GET請(qǐng)求 https://api.map.baidu.com/place/v2/search?query=橘子洲頭®ion=全國&output=json&ak=您的密鑰
查詢出橘子洲頭相關(guān)的一地址信息,經(jīng)緯度等等。
完整的返回結(jié)果
{ "status":0, "message":"ok", "result_type":"poi_type", "results":[ { "name":"橘子洲景區(qū)", "location":{ "lat":28.192929, "lng":112.968743 }, "address":"湖南省長(zhǎng)沙市岳麓區(qū)橘子洲頭2號(hào)", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"83513b4be0009cc6213bf2cd", "telephone":"(0731)88614640", "detail":1, "uid":"83513b4be0009cc6213bf2cd" }, { "name":"青年藝術(shù)雕塑", "location":{ "lat":28.173455, "lng":112.966916 }, "address":"橘子洲頭2號(hào)橘子洲景區(qū)內(nèi)", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"ab3dca630f93f12615c90570", "telephone":"(0731)88614640", "detail":1, "uid":"ab3dca630f93f12615c90570" }, { "name":"橘子洲頭碑", "location":{ "lat":28.175443, "lng":112.96717 }, "address":"橘洲路2號(hào)附近", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"", "detail":1, "uid":"25702022f40b7da1a7c75638" }, { "name":"岳麓山橘子洲旅游區(qū)問天臺(tái)", "location":{ "lat":28.170762, "lng":112.966689 }, "address":"橘子洲頭2號(hào)橘子洲景區(qū)內(nèi)", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"70912806c30c2c9d2cb96d9c", "detail":1, "uid":"70912806c30c2c9d2cb96d9c" }, { "name":"橘子洲景區(qū)-休息區(qū)", "location":{ "lat":28.206309, "lng":112.971438 }, "address":"橘子洲頭2號(hào)橘子洲景區(qū)內(nèi)", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"", "detail":1, "uid":"6ae23d68a7adc6ae40ab9ad6" }, { "name":"橘子洲景區(qū)-停車場(chǎng)", "location":{ "lat":28.203858, "lng":112.969631 }, "address":"橘子洲頭2號(hào)橘子洲景區(qū)內(nèi)", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"4067817da6456a07b72655b2", "detail":1, "uid":"4067817da6456a07b72655b2" }, { "name":"洲頭廣場(chǎng)", "location":{ "lat":28.171088, "lng":112.966631 }, "address":"橘子洲頭2號(hào)橘子洲景區(qū)內(nèi)問天臺(tái)附近", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"1c411697248e3ec19cec2bf9", "detail":1, "uid":"1c411697248e3ec19cec2bf9" }, { "name":"沐山潯(長(zhǎng)沙岳麓山橘子洲頭店)", "location":{ "lat":28.198057, "lng":112.961585 }, "address":"湖南省長(zhǎng)沙市岳麓區(qū)新民路4號(hào)欣和資產(chǎn)大廈1樓", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"8d24ba5e370be9895cd4fe13", "telephone":"(0731)85677520", "detail":1, "uid":"8d24ba5e370be9895cd4fe13" }, { "name":"橘子洲景區(qū)經(jīng)營(yíng)服務(wù)點(diǎn)", "location":{ "lat":28.200331, "lng":112.969288 }, "address":"橘子洲頭2號(hào)", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"d71c3e4000c24f27b23c8163", "detail":1, "uid":"d71c3e4000c24f27b23c8163" }, { "name":"橘洲沙灘樂園-南門", "location":{ "lat":28.20657, "lng":112.970384 }, "address":"橘子洲頭2號(hào)橘子洲公園以北(近橘子洲尾橘子洲拱極樓)", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"159d4e6bd2ff514209b93ad0", "detail":1, "uid":"159d4e6bd2ff514209b93ad0" } ] }
舉例說明 -- 茶顏悅色
//GET請(qǐng)求 https://api.map.baidu.com/place/v2/search?query=茶顏悅色®ion=長(zhǎng)沙&output=json&ak=您的密鑰
可以查詢到長(zhǎng)沙的茶顏悅色:地址信息,經(jīng)緯度等等信息。
完整的返回結(jié)果
{ "status":0, "message":"ok", "result_type":"poi_type", "results":[ { "name":"茶顏悅色(陽光100鳳凰街店)", "location":{ "lat":28.146368, "lng":112.950625 }, "address":"湖南省長(zhǎng)沙市岳麓區(qū)岳麓街道陽光100鳳凰街18棟1037室", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"1660cdff5bc0dd2017c8f6ce", "telephone":"19174865152", "detail":1, "uid":"1660cdff5bc0dd2017c8f6ce" }, { "name":"茶顏悅色(上河國際店)", "location":{ "lat":28.185979, "lng":113.034164 }, "address":"湖南省長(zhǎng)沙市雨花區(qū)西子街146號(hào)c區(qū)", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"雨花區(qū)", "street_id":"3cdc04e8dcb588535abbbc3d", "telephone":"19176658739", "detail":1, "uid":"3cdc04e8dcb588535abbbc3d" }, { "name":"茶顏悅色(九龍國金中心店)", "location":{ "lat":28.197357, "lng":112.986442 }, "address":"湖南省長(zhǎng)沙市芙蓉區(qū)定王臺(tái)街道東牌樓路長(zhǎng)沙國金中心商場(chǎng)地庫一層LG163-8號(hào)", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"芙蓉區(qū)", "street_id":"bd9a373edb36752f770269f6", "telephone":"15387549235,4009989577", "detail":1, "uid":"bd9a373edb36752f770269f6" }, { "name":"茶顏悅色(高鐵站店)", "location":{ "lat":28.153612, "lng":113.071826 }, "address":"長(zhǎng)沙市雨花區(qū)紅旗路長(zhǎng)沙南站候車廳二樓B12-B13檢票口樓上", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"雨花區(qū)", "telephone":"17375891175", "detail":1, "uid":"994a4c1807e8626008b93a8e" }, { "name":"茶顏悅色(高鐵南二店)", "location":{ "lat":28.152715, "lng":113.073768 }, "address":"雨花區(qū)雨花大道武廣高鐵站東廣場(chǎng)進(jìn)站口正西方向78米", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"雨花區(qū)", "street_id":"18f4295755bcedba774ff1b0", "telephone":"18390892675", "detail":1, "uid":"18f4295755bcedba774ff1b0" }, { "name":"茶顏悅色(公園大都會(huì)店)", "location":{ "lat":28.217887, "lng":112.998171 }, "address":"湖南省長(zhǎng)沙市開福區(qū)東風(fēng)路71號(hào)", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"開福區(qū)", "street_id":"286e6312c1ddb3546c3e1be2", "telephone":"19198138132", "detail":1, "uid":"286e6312c1ddb3546c3e1be2" }, { "name":"茶顏悅色(涉外店)", "location":{ "lat":28.207142, "lng":112.877791 }, "address":"湖南省長(zhǎng)沙市岳麓區(qū)高新開發(fā)區(qū)楓林三路與麓松路交匯處的東北角東塘商業(yè)大樓一樓A03商鋪", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"岳麓區(qū)", "street_id":"2f68f9d98ada063e63180930", "detail":1, "uid":"2f68f9d98ada063e63180930" }, { "name":"茶顏悅色(窯嶺店)", "location":{ "lat":28.191754, "lng":113.002836 }, "address":"湖南省長(zhǎng)沙市芙蓉區(qū)人民中路201號(hào)", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"芙蓉區(qū)", "street_id":"5e37b57b42107b9b30f71df2", "telephone":"15387579067", "detail":1, "uid":"5e37b57b42107b9b30f71df2" }, { "name":"茶顏悅色(泉塘店)", "location":{ "lat":28.22173, "lng":113.114117 }, "address":"湖南省長(zhǎng)沙市長(zhǎng)沙縣泉塘街泉塘二期35棟", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"長(zhǎng)沙縣", "street_id":"2cea24cf1af4e8fee0110361", "telephone":"19174816659", "detail":1, "uid":"2cea24cf1af4e8fee0110361" }, { "name":"茶顏悅色(平和堂百貨店)", "location":{ "lat":28.200329, "lng":112.983429 }, "address":"湖南省長(zhǎng)沙市芙蓉區(qū)黃興中路88號(hào)平和堂百貨B1層", "province":"湖南省", "city":"長(zhǎng)沙市", "area":"芙蓉區(qū)", "street_id":"2fe14fb0c66b8762c056acae", "telephone":"19174861869", "detail":1, "uid":"2fe14fb0c66b8762c056acae" } ] }
Vue項(xiàng)目中整合百度API獲取地理位置的方法
新建 src\utils\loadBMap.js
文件
/** * 加載地圖 * @param {Function} callback 回調(diào)函數(shù)名稱,回調(diào)函數(shù)將會(huì)掛載到window上,例如:window.initBaiduMapScript,在方法中就能拿到BMap對(duì)象 */ export function loadBMap(callback) { var script = document.createElement('script') script.src = 'http://api.map.baidu.com/api?v=2.0&ak=您的密鑰&callback=' + callback document.body.appendChild(script) }
通過百度API服務(wù)類Geolocation 來實(shí)現(xiàn)
Geolocation
返回用戶當(dāng)前的位置。此方法利用瀏覽器的geolocation接口獲取用戶當(dāng)前位置,不支持的瀏覽器將無法獲取。
getCurrentPosition()
返回用戶當(dāng)前位置。
getStatus()
返回狀態(tài)碼,當(dāng)定位成功后,狀態(tài)碼為:BMAP_STATUS_SUCCESS
組件中使用
<script> const that = this window.initBaiduMapScript = () => { that.BMap = window.BMap // 獲取地理位置 that.getLocation() } loadBMap('initBaiduMapScript') </script>
data定義的參數(shù)
// 獲取地理位置 BMap: null, geolocation: null, // Geolocation對(duì)象實(shí)例 positioning: false, // 定位中 positioningInterval: null, // 定位倒計(jì)時(shí)計(jì)時(shí)器 countDown: 30, // 倒計(jì)時(shí),單位秒 location: null, // 位置信息
點(diǎn)擊下方詳細(xì)信息,查看獲取地理位置的方法 getLocation 完整代碼。
// 獲取地理定位 getLocation() { const that = this that.loading = true that.$message.success('獲取地理位置定位中') that.geolocation = new that.BMap.Geolocation() if (that.geolocation) { // 開啟SDK輔助定位,僅當(dāng)使用環(huán)境為移動(dòng)web混合開發(fā),且開啟了定位sdk輔助定位功能后生效 that.geolocation.enableSDKLocation() // 開始定位 this.positioning = true // 倒計(jì)時(shí) this.positioningInterval = setInterval(() => { if (this.countDown === 0) { this.countDown = 30 clearInterval(this.positioningInterval) } else { this.countDown-- } }, 1000) // 位置選項(xiàng) const positionOptions = { enableHighAccuracy: true, // 要求瀏覽器獲取最佳結(jié)果 timeout: 30, // 超時(shí)時(shí)間 maximumAge: 0, // 允許返回指定時(shí)間內(nèi)的緩存結(jié)果。如果此值為0,則瀏覽器將立即獲取新定位結(jié)果 } // 獲取用戶位置信息 that.geolocation.getCurrentPosition((position) => { that.resetPositioning() // 獲取定位結(jié)果狀態(tài)碼 const statusCode = that.geolocation.getStatus() let msg = '由于未知錯(cuò)誤而無法檢索設(shè)備的位置' // 提示消息 let msgType = 'error' // 消息類型 // 判斷結(jié)果狀態(tài)碼,為0代表獲取成功,讀取省市、經(jīng)緯度 switch (statusCode) { case 0: msgType = 'success' msg = '獲取地理位置定位請(qǐng)求成功' if (position) { console.log('pppppppp') console.log(position) // 數(shù)據(jù)變量定義 let lat = 0.0 // 經(jīng)度 let lng = 0.0 // 緯度 let province = '未知' // 經(jīng)度 let city = '未知' // 緯度 // 坐標(biāo) if (position.point) { lat = position.point.lat lng = position.point.lng } // 位置 if (position.address) { province = position.address.province city = position.address.city } that.location = { province, city, 省份: province, 城市: city, 經(jīng)度: lat, 緯度: lng, } } else { msg = '由于未知錯(cuò)誤而無法檢索設(shè)備的位置' } break case 2: msg = '由于未知錯(cuò)誤而無法檢索設(shè)備的位置' break case 4: case 5: msg = '位置服務(wù)請(qǐng)求非法' break case 6: msg = '應(yīng)用程序沒有使用位置服務(wù)的權(quán)限' break case 7: msg = '網(wǎng)絡(luò)不可用或者無法連接到獲取位置信息的衛(wèi)星' break case 8: msg = '無法在指定的最大超時(shí)間隔內(nèi)檢索位置信息' break default: msg = '由于未知錯(cuò)誤而無法檢索設(shè)備的位置' break } console.log(that.location) console.log(msg) that.loading = false that.$message.success(msg) }, positionOptions) } else { that.loading = false console.log('您的瀏覽器不支持地理位置服務(wù)') that.$message.error('您的瀏覽器不支持地理位置服務(wù)') } }, // 重置定位相關(guān)數(shù)據(jù) resetPositioning() { this.positioning = false this.location = null this.countDown = 30 clearInterval(this.positioningInterval) },
vue-baidu-map 百度地圖官方vue組件
安裝
npm i --save vue-baidu-map
初始化
import Vue from 'vue' import BaiduMap from 'vue-baidu-map' Vue.use(BaiduMap, { // ak 是在百度地圖開發(fā)者平臺(tái)申請(qǐng)的密鑰 詳見 http://lbsyun.baidu.com/apiconsole/key */ ak: 'YOUR_APP_KEY' })
使用
<template> <baidu-map class="map"> </baidu-map> </template> <style> /* 地圖容器必須設(shè)置寬和高屬性 */ .map { width: 400px; height: 300px; } </style>
以上就是vue整合項(xiàng)目中百度API示例詳解的詳細(xì)內(nèi)容,更多關(guān)于vue整合百度API的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Grid拖拽布局
這篇文章主要為大家詳細(xì)介紹了如何利用vue實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Grid拖拽布局,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12Vue如何設(shè)置滾動(dòng)條自動(dòng)保持到最底端
在開發(fā)中我們常常會(huì)遇到需要讓滾動(dòng)條保持到最底端的需求,比如在開發(fā)一個(gè)聊天框時(shí),請(qǐng)求接口拿到消息列表數(shù)據(jù),展示到前端頁面時(shí),需要讓滾動(dòng)條自動(dòng)滾到最底端,以此來展示最后的聊天記錄,這篇文章主要介紹了Vue如何設(shè)置滾動(dòng)條自動(dòng)保持到最底端,需要的朋友可以參考下2024-08-08Vue3實(shí)現(xiàn)九宮格抽獎(jiǎng)效果的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何通過Vue3實(shí)現(xiàn)簡(jiǎn)單的九宮格抽獎(jiǎng)效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以了解一下2023-10-10vue3?組件與API直接使用的方法詳解(無需import)
這篇文章主要介紹了vue3?組件與API直接使用的方法(無需import),主要包括vue3自動(dòng)導(dǎo)入和API的自動(dòng)引入問題,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09詳解從react轉(zhuǎn)職到vue開發(fā)的項(xiàng)目準(zhǔn)備
這篇文章主要介紹了詳解從react轉(zhuǎn)職到vue開發(fā)的項(xiàng)目準(zhǔn)備,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01vue的路由守衛(wèi)和keep-alive后生命周期詳解
這篇文章主要為大家詳細(xì)介紹了vue路由守衛(wèi)和keep-alive,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03Vue.js?rules校驗(yàn)規(guī)則舉例詳解
Vue表單校驗(yàn)規(guī)則(rules)是一種用于驗(yàn)證表單數(shù)據(jù)的對(duì)象,它通常用于Vue.js框架中的表單組件中,可以在表單提交前進(jìn)行數(shù)據(jù)驗(yàn)證,這篇文章主要給大家介紹了關(guān)于Vue.js?rules校驗(yàn)規(guī)則的相關(guān)資料,需要的朋友可以參考下2024-02-02