vue專案中使用百度地圖
近期有一個專案,考生報名的時候,需要填寫自己的居住地址,要求通過地圖來選擇地址,獲取考生居住地的經緯度,方便主考單位就近給考生安排考場。
本人主要是做後端開發,前端開發不是很熟,在此記錄一下,也方便其他有需求的朋友參考一下。如有不足之處,歡迎指正。
功能實現細節:
第一步安裝外掛: npm install vue-baidu-map --save
第二步:全域性註冊,在main.js中引入以下程式碼
import BaiduMap from 'vue-baidu-map'
Vue.use(BaiduMap, {
ak: '你申請的key'
})
第三步:介面程式碼
<template>
<div class="app-container">
<el-autocomplete
v-model="mapLocation.address"
:fetch-suggestions="querySearch"
placeholder="請輸入詳細地址"
style="width: 80%"
:trigger-on-focus="false"
@select="handleSelect"
/>
<div style="margin: 5px">
<baidu-map :center="mapCenter" :zoom="zoom" @ready="handler" style="height:1080px"
@click="getClickInfo" :scroll-wheel-zoom='true'>
</baidu-map>
</div>
</div>
</template>
<script>
export default {
name: 'TestBaiDu',
data () {
return {
mapCenter: { lng: 109.45744048529967, lat: 36.49771311230842 },
zoom: 13,
mapLocation: {
address: undefined,
coordinate: undefined
}
}
},
methods: {
handler ({BMap, map}) {
this.BMap = BMap
this.map = map
if (this.mapLocation.coordinate && this.mapLocation.coordinate.lng) {
this.mapCenter.lng = this.mapLocation.coordinate.lng
this.mapCenter.lat = this.mapLocation.coordinate.lat
this.mapZoom = 15
map.addOverlay(new this.BMap.Marker(this.mapLocation.coordinate))
} else {
this.mapCenter.lng = 113.271429
this.mapCenter.lat = 23.135336
this.mapZoom = 10
}
},
getClickInfo (e) {
console.log(e.point.lng)
console.log(e.point.lat)
this.mapCenter.lng = e.point.lng
this.mapCenter.lat = e.point.lat
},
querySearch(queryString, cb) {
var that = this
var myGeo = new this.BMap.Geocoder()
myGeo.getPoint(queryString, function(point) {
if (point) {
that.mapLocation.coordinate = point
that.makerCenter(point)
} else {
that.mapLocation.coordinate = null
}
}, this.locationCity)
var options = {
onSearchComplete: function(results) {
if (local.getStatus() === 0) {
// 判斷狀態是否正確
var s = []
for (var i = 0; i < results.getCurrentNumPois(); i++) {
var x = results.getPoi(i)
var item = { value: x.address + x.title, point: x.point }
s.push(item)
cb(s)
}
} else {
cb()
}
}
}
var local = new this.BMap.LocalSearch(this.map, options)
local.search(queryString)
},
handleSelect(item) {
var { point } = item
this.mapLocation.coordinate = point
this.makerCenter(point)
},
makerCenter(point) {
if (this.map) {
this.map.clearOverlays()
this.map.addOverlay(new this.BMap.Marker(point))
this.mapCenter.lng = point.lng
this.mapCenter.lat = point.lat
this.mapZoom = 15
}
}
}
}
</script>
第四步:執行效果 ,輸入框輸入地址,選擇搜尋的結果,獲得該地址的經緯度
相關文章
- vue 專案中引用百度地圖Vue地圖
- vue專案使用和引用百度地圖的操作Vue地圖
- 在 HTTPS 專案中使用百度地圖 APIHTTP地圖API
- react專案結合echarts,百度地圖實現熱力圖ReactEcharts地圖
- Vue百度地圖電子圍欄Vue地圖
- vue專案使用Echarts製作專案工期甘特圖VueEcharts
- vue專案中如何使用this.$confirmVue
- vue使用Echarts繪製地圖VueEcharts地圖
- 百度地圖API基本使用(一)地圖API
- bing Map 在vue專案中的使用Vue
- JN專案-地圖定位優化地圖優化
- 在vue專案中優雅的使用SvgVueSVG
- 地圖開發筆記(一):百度地圖介紹、使用和Qt內嵌地圖Demo地圖筆記QT
- 使用vue-cli搭建VUE專案Vue
- vue中vuex,echarts,地圖,ueditor的使用(一篇就夠)VueEcharts地圖
- vue專案中使用svgVueSVG
- 使用 Docker 部署 vue 專案DockerVue
- vue專案中使用eslintVueEsLint
- 使用webpack搭建vue專案WebVue
- 使用 pnpm 建立 vue 專案NPMVue
- Android專案匯入高德地圖Android地圖
- 如何在vue專案中優雅的使用SVGVueSVG
- 【COVID-19中國疫情地圖】專案詳細介紹地圖
- Vue 專案中接入sentryVue
- 在vue專案中jsPlumb製作流程圖,拖拽複製使用 jquery 和 jquery UIVueJS流程圖jQueryUI
- vue專案中使用swiper實現中間大,兩邊小的輪播圖Vue
- 【 Vue 】 Vue 使用腳手架建立專案Vue
- vue專案中使用bpmn-流程圖xml檔案中節點屬性轉json結構Vue流程圖XMLJSON
- 百度地圖,您所使用的地圖JS API版本過低,解決方法地圖JSAPI
- VUE中使用Echarts繪製地圖遷移VueEcharts地圖
- vue專案新增圖片裁剪元件Vue元件
- vue引入cesimu地圖Vue地圖
- 在vue專案中使用elementUIVueUI
- Vue開源專案使用探索Vue
- Vue專案使用pdf.jsVueJS
- vue專案使用element元件庫Vue元件
- 百度地圖GeoUtils示例地圖
- Vue專案中使用html2canvas生成頁面截圖VueHTMLCanvas