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
步驟一:登錄 百度地圖開放平臺
在 控制臺---->應(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í)候,需要我們手動創(chuàng)建。
module.exports = {
configureWebpack: {
externals: {
'BMap': 'BMap' // 百度地圖配置
}
}
}

步驟四:接下來就是具體的代碼實(shí)現(xiàn)了。
接下來會介紹兩種實(shí)現(xià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屬性即可顯示位置信息,例如:北京市豐臺區(qū)
方式二:直接在組件中進(jìn)行定位。
直接在組件中使用以下代碼即可定位成功,這種方式耗時(shí)比方式一要長。
代碼及截圖如下:
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屬性獲取到位置信息了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue項(xiàng)目中使用crypto-js實(shí)現(xiàn)加密解密方式
這篇文章主要介紹了vue項(xiàng)目中使用crypto-js實(shí)現(xiàn)加密解密方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
vue項(xiàng)目打包后,由于html被緩存導(dǎo)致出現(xiàn)白屏的處理方案
這篇文章主要介紹了vue項(xiàng)目打包后,由于html被緩存導(dǎo)致出現(xiàn)白屏的處理方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Vue 頁面監(jiān)聽用戶預(yù)覽時(shí)間功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue 頁面如何監(jiān)聽用戶預(yù)覽時(shí)間,首先需要借助vue頁面的生命周期函數(shù)mounted和destroyed,分別加入開始計(jì)時(shí)和清除計(jì)時(shí)的邏輯,通過相關(guān)操作實(shí)現(xiàn)此功能,需要的朋友可以參考下2021-07-07
vue-cli中設(shè)置publicPath的幾種方式對比
這篇文章主要介紹了vue-cli中設(shè)置publicPath的幾種方式對比,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07

