【vue-baidu-map】地址搜索

该文章描述了一个Vue.js组件,用于实现基于关键词的地址搜索功能。用户可以输入关键字,搜索地图上的位置,结果显示在弹窗中,包括地址和经纬度。用户确认选择后,坐标和地址将被赋值给外部表单。该组件利用了百度地图API进行地理定位和搜索。

地址搜索

需求

根据地名搜索,选择地图中的地点。

实现

第一步:设置初始值 

data(){
  return { 
    BMap:null,
    myGeo:null,
    show_adr:false,
    zoom: 13,
    center: { lng: 118.83, lat: 31.95 },
    keyword:'',
    location:'南京',
    modal:{
      adr:'',
      point:''
    }
  };
}

第二步:设置弹窗

<el-dialog title="坐标" :visible.sync="show_adr" width="50%">
  <div class="latitude">关键词:<el-input v-model="keyword" style="width: 300px" placeholder="请输入关键字"/></div>
  <div class="latitude">地址:{{modal.adr}}</div>
  <div class="latitude">经纬度:{{modal.point}}</div> 
  <baidu-map
    class="map"
    center="江宁"
    :zoom="zoom"
    @ready="handler"
    style="height: 300px"
    :scroll-wheel-zoom="true"
  >
    <bm-local-search 
      class="map_search"
      :keyword="keyword" 
      :auto-viewport="true" 
      :location="location"
      :page-capacity="100"
      @infohtmlset="search"
    ></bm-local-search>
  </baidu-map>
  <span slot="footer" class="dialog-footer">
    <el-button @click="show_adr = false">取 消</el-button>
    <el-button type="primary" @click="submit_adr()">确 定</el-button>
  </span>
</el-dialog>
handler({ BMap }) {
    this.BMap = BMap;
},

第三步:搜索地址

search(e) {
  this.modal.adr = e.address
  this.modal.point = e.point.lng + "," + e.point.lat
},
 

第四步:确认地址,提交弹窗 

clickAddress() {
  this.modal.point = ''
  this.modal.adr=''
  this.keyword = ''
  this.center = { lng: 118.83, lat: 31.95 }
  this.show_adr = true;
}, 
submit_adr() {
  // 赋值给弹窗外的表单
  this.form.point = this.modal.point
  this.form.adr = this.modal.adr
  this.show_adr = false
},
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宾果的救星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值