vue+elementUi實現(xiàn)點擊地圖自動填充經(jīng)緯度以及地點
本文實例為大家分享了vue+elementUi實現(xiàn)點擊地圖自動填充經(jīng)緯度以及地點的具體代碼,供大家參考,具體內(nèi)容如下
實現(xiàn)代碼
1.安裝組件
終端運行:
npm install vue-baidu-map --save
2.HTML代碼塊
<el-form-item label="經(jīng)度" :label-width="formLabelWidth" prop="longitude">
?? ?<el-input ?class="lineinput" placeholder="點擊地圖輸入經(jīng)度" ?style="width: 80%;" size="samll" v-model.number="form.longitude"></el-input>
</el-form-item>
<el-form-item label="維度" :label-width="formLabelWidth" prop="latitude">
? ? <el-input ?class="lineinput" placeholder="點擊地圖輸入維度" style="width: 80%;" size="samll" v-model.number="form.latitude"></el-input>
</el-form-item>
<el-form-item label="廠區(qū)地址" :label-width="formLabelWidth" prop="location">
? ? <el-input ?class="lineinput" placeholder="點擊地圖輸入廠區(qū)地址" style="width: 80%;" size="small" v-model="form.location"></el-input>
</el-form-item>
<el-form-item :label-width="formLabelWidth">
? ? <baidu-map ?class="map" :center="center" :zoom="zoom" @ready="handler"
? ? :scroll-wheel-zoom="true"
? ? @click="clickEvent"
? ? ak="33B192o1jPaqOHASGGAIkoMuwi8W76j3">
? ? ?? ?<!-- 地圖控件位置 -->
? ? ? ? <bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-navigation>
? ? ? ? <!-- 獲取城市列表 -->
? ? ? ? <bm-city-list anchor="BMAP_ANCHOR_TOP_LEFT"></bm-city-list>
? ? ? ? <!-- 定位當(dāng)前位置 -->
? ? ? ? <bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT" ?:showAddressBar="true" :autoLocation="true" @locationSuccess="getLoctionSuccess" ></bm-geolocation>
? ? ? ? <!-- 地圖容器 -->
? ? ? ? <bm-view :style="{width:'75%',height: '500px'}"></bm-view>
? ? ?</baidu-map>
</el-form-item>3.導(dǎo)入依賴
import {BaiduMap,BmNavigation,BmView,BmGeolocation,BmCityList} from 'vue-baidu-map'4.js代碼塊
export default {
? name: "mapDialog",
?? ?components: {
? ? ? ? ? ? BaiduMap,
? ? ? ? ? ? BmNavigation,
? ? ? ? ? ? BmView,
? ? ? ? ? ? BmGeolocation,
? ? ? ? ? ? BmCityList,
? ? ? ? ? ? ElImageViewer
? ? ? ? },
?? ?data() {
? ? ? ? return {
??? ??? ??? ?center: {lng: 121.833138, lat: 39.081725},
? ? ? ? ? ? ? ? zoom: 12,
? ? ? ? ? ? ? ? mapVisible:false,
? ? ? ? ? ? ? ? form:{
? ? ? ? ? ? ? ? ? ? longitude:'',
? ? ? ? ? ? ? ? ? ? latitude:'',
? ? ? ? ? ? ? ? ? ? location:'',
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? clientHeight:document.documentElement.clientHeight-90, // 設(shè)置屏幕高度
? ? ? ? ? ? ? ? iconUrl:'static/zuobiao.gif',//點擊坐標(biāo)標(biāo)記
? ? ? ? }
??? ?}
?? ?methods:{
? ? ? ? handler ({BMap, map}) {
? ? ? ? ? let _this = this;?? ?// 設(shè)置一個臨時變量指向vue實例;
? ? ? ? ? var geolocation = new BMap.Geolocation();
? ? ? ? ? geolocation.getCurrentPosition(function(r){
? ? ? ? ? ? console.log(r);
? ? ? ? ? ? _this.center = {lng: r.longitude, lat: r.latitude};?? ??? ?// 設(shè)置center屬性值
? ? ? ? ? ? _this.autoLocationPoint = {lng: r.longitude, lat: r.latitude};?? ??? ?// 自定義覆蓋物
? ? ? ? ? ? _this.initLocation = true;
? ? ? ? ? },{enableHighAccuracy: true})
? ? ? ? ? ? window.map = map;
? ? ? ? },
? ? ? ? //點擊地圖監(jiān)聽
? ? ? ? clickEvent(e){
? ? ? ? ? map.clearOverlays();
? ? ? ? ? let Icon_0 = new BMap.Icon("static/zuobiao.gif", new BMap.Size(64, 64), {anchor: new BMap.Size(18, 32),imageSize: new BMap.Size(36, 36)});
? ? ? ? ? var myMarker = new BMap.Marker(new BMap.Point(e.point.lng, e.point.lat),{icon: Icon_0});
? ? ? ? ? map.addOverlay(myMarker);
? ? ? ? ? //用所定位的經(jīng)緯度查找所在地省市街道等信息
? ? ? ? ? var point = new BMap.Point(e.point.lng, e.point.lat);
? ? ? ? ? var gc = new BMap.Geocoder();
? ? ? ? ? let _this = this;
? ? ? ? ? gc.getLocation(point, function (rs) {
? ? ? ? ? ? var addComp = rs.addressComponents;
? ? ? ? ? ? //console.log(rs.address);//地址信息
? ? ? ? ? ? _this.form.location = rs.address;
? ? ? ? ? });
? ? ? ? ? ? this.form.longitude = e.point.lng;
? ? ? ? ? ? this.form.latitude = e.point.lat;
? ? ? ? },
? ? ? ? //定位成功回調(diào)
? ? ? ? getLoctionSuccess(point, AddressComponent, marker){
? ? ? ? ? map.clearOverlays();
? ? ? ? ? let Icon_0 = new BMap.Icon("static/zuobiao.gif", new BMap.Size(64, 64), {anchor: new BMap.Size(18, 32),imageSize: new BMap.Size(36, 36)});
? ? ? ? ? var myMarker = new BMap.Marker(new BMap.Point(point.point.lng, point.point.lat),{icon: Icon_0});
? ? ? ? ? map.addOverlay(myMarker);
? ? ? ? ? this.form.longitude = point.point.lng;
? ? ? ? ? this.form.latitude = point.point.lat;
? ? ? ? },
? ? ? ? findlocation(){
? ? ? ? ? this.$emit("findlocdata",this.form)
? ? ? ? ? this.mapVisible = false
? ? ? ? },
? ? ? ? mapShow(){
? ? ? ? ? this.mapVisible = true
? ? ? ? },
? ?}結(jié)果展示

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實現(xiàn)全局和局部跨域的兩種方式
本文主要介紹了SpringBoot實現(xiàn)全局和局部跨域的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Vue中接收二進制文件流實現(xiàn)pdf預(yù)覽的方法
本文主要介紹了Vue中接收二進制文件流實現(xiàn)pdf預(yù)覽的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
vue3之Suspense加載異步數(shù)據(jù)的使用
本文主要介紹了vue3之Suspense加載異步數(shù)據(jù)的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
vue?elementui?實現(xiàn)搜索欄子組件封裝的示例代碼
這篇文章主要介紹了vue?elementui?搜索欄子組件封裝,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
Vue中靈活拖拽的前端神器VueDraggablePlus的用法詳解
這篇文章主要介紹了一款功能強大、靈活易用的前端組件VueDraggablePlus,作為前端工程師,我們經(jīng)常會遇到需要實現(xiàn)拖拽功能的場景,而VueDraggablePlus正是為了解決這一痛點而誕生的,讓我們一起來看看它的特點和用法吧2024-03-03
vue操作下拉選擇器獲取選擇的數(shù)據(jù)的id方法
今天小編就為大家分享一篇vue操作下拉選擇器獲取選擇的數(shù)據(jù)的id方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

