Vue使用百度地圖實(shí)現(xiàn)城市定位
本文實(shí)例為大家分享了Vue使用百度地圖實(shí)現(xiàn)城市定位的具體代碼,供大家參考,具體內(nèi)容如下
Vue項(xiàng)目運(yùn)行環(huán)境:Vue 2.0,Vue Cli 3.0
步驟一:登錄 百度地圖開放平臺(tái)
在 控制臺(tái)---->應(yīng)用管理---->我的應(yīng)用 下面創(chuàng)建一個(gè)應(yīng)用。
目的是獲取 ak
步驟二:在public文件夾的index.html文件中
導(dǎo)入百度地圖,拼上你的ak
步驟三:在項(xiàng)目的根目錄中創(chuàng)建vue.config.js文件
如果有vue.config.js文件的話,直接添加以下代碼即可。
vue.config.js文件在VueCli 3.0之后就不再默認(rèn)創(chuàng)建了,有用到這個(gè)文件的時(shí)候,需要我們手動(dòng)創(chuàng)建。
module.exports = { configureWebpack: { externals: { 'BMap': 'BMap' // 百度地圖配置 } } }
步驟四:接下來就是具體的代碼實(shí)現(xiàn)了。
接下來會(huì)介紹兩種實(shí)現(xiàn)方案。
方式一(推薦使用):?jiǎn)为?dú)封裝js工具文件實(shí)現(xiàn)地址獲取。
1、在src文件夾下新建util文件夾,然后在util文件夾中新建getUserLocation.js文件。
注:這個(gè)util文件夾,可以存放所有自己封裝的工具js文件,不單單是getUserLocation.js這一個(gè)定位相關(guān)的文件。
代碼和截圖如下:
// 獲取當(dāng)前城市 const getCurrentCityName = function() { return new Promise((resolve, reject) => { let myCity = new BMap.LocalCity(); myCity.get((result) => { let geoc = new BMap.Geocoder(); geoc.getLocation(result.center, (rs) => { // rs 中攜帶著所有的定位信息,這里只獲取了城市(city)和所在的區(qū)(district) let addComp = rs.addressComponents; let result = addComp.city + addComp.district; resolve(result); }); }, {enableHighAccuracy: true}); }); } export default getCurrentCityName;
在組件中引入并調(diào)用上述文件中封裝的方法
方式一:引入工具文件
頁面通過locationMsg屬性即可顯示位置信息,例如:北京市豐臺(tái)區(qū)
方式二:直接在組件中進(jìn)行定位。
直接在組件中使用以下代碼即可定位成功,這種方式耗時(shí)比方式一要長(zhǎng)。
代碼及截圖如下:
mounted() { // 獲取位置信息 this.getCity(); }, methods: { getCity() { const getLocation = new BMap.Geolocation(); var _this = this; getLocation.getCurrentPosition((position) => { // position中存放所有的定位數(shù)據(jù) console.log(position); // 這里獲取的是城市和省 let city = position.address.city; let province = position.address.province; _this.locationMsg = province + city; }, () => { _this.locationMsg = '定位失敗!'; }, {provider: 'baidu'}); } }
代碼圖
注:這里的_this其實(shí)是沒有必要的,可以直接使用this,之前沒有使用箭頭函數(shù),就使用了_this,后來改成箭頭函數(shù)之后,沒有修改_this相關(guān)的代碼。當(dāng)然按照上述代碼寫也沒有問題。
不出意外,就可以在組件中通過locationMsg屬性獲取到位置信息了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue-electron使用serialport時(shí)問題解決方案
這篇文章主要介紹了vue-electron使用serialport時(shí)問題解決方案,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09基于Vue+Openlayer實(shí)現(xiàn)動(dòng)態(tài)加載geojson的方法
本文通過實(shí)例代碼給大家介紹基于Vue+Openlayer實(shí)現(xiàn)動(dòng)態(tài)加載geojson的方法,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-09-09vue實(shí)現(xiàn)點(diǎn)擊選中,其他的不選中方法
今天小編就為大家分享一篇vue實(shí)現(xiàn)點(diǎn)擊選中,其他的不選中方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09Element?Plus組件Form表單Table表格二次封裝的完整過程
一般在后臺(tái)管理系統(tǒng)的開發(fā)中,都會(huì)遇到很多table,但每一次都去引入el-table就會(huì)導(dǎo)致代碼十分冗余,所以基于組件做一下二次封裝成自己需要的組件就十分nice,下面這篇文章主要給大家介紹了關(guān)于Element?Plus組件Form表單Table表格二次封裝的相關(guān)資料,需要的朋友可以參考下2022-09-09