vue用BMap百度地图实现即时搜索功能

本文实例为大家分享了vue用BMap百度地图实现即时搜索功能的具体代码,供大家参考,具体内容如下

功能如下:

搜索框搜索---自动下拉---点击数据---数据显示在搜索框里---点击新增--数据显示在下方--点击删除--删除当前

代码:

首先去百度开发者申请一个key

然后将key引入到项目的 index.html:

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的key"></script>

下面是组件代码:

<template>
 <div id="app">
  <el-form label-width="200px">
     <el-form-item label="包含小区" required class="housing_input">
       <el-input id="suggestId" v-model="city" placeholder="请输入小区名称" name="address_detail" />
       <div id="allmap"/>
       <el-button @click="add_housing">新增</el-button>
       <div v-for="(item,index) in add_housing_list" :key="index" class="housingList">
         <span>{{item}}</span>
         <el-button class="delete_button" @click="delete_housing(index)">删除</el-button>
       </div>
     </el-form-item>
  </el-form>
 </div>
</template>

<script>
export default {
 name: 'demo',
 data(){
  return{
   city: '',
   address_detail: null, //详细地址
   add_housing_list: ["阿里巴巴"],
  }
 },
 mounted() {
  this.getcity()
 },
 methods:{
  getcity(){
   this.$nextTick(function() {
   var th = this
   // 创建Map实例
   var map = new BMap.Map('allmap')
   // 初始化地图,设置中心点坐标,
   var point = new BMap.Point(120.211877, 30.255194) // 创建点坐标,汉得公司的经纬度坐标
   map.centerAndZoom(point, 15)
   map.enableScrollWheelZoom()

   var ac = new BMap.Autocomplete( // 建立一个自动完成的对象
    {
     'input': 'suggestId',
     'location': map
    })
   var myValue
   ac.addEventListener('onconfirm', function(e) { // 鼠标点击下拉列表后的事件
    var _value = e.item.value //获取点击的条目
    myValue = _value.province + _value.city + _value.district + _value.street + _value.business //地址拼接赋给一个变量
    th.city = myValue //将地址赋给data中的city
    // console.log(th.city)
    setPlace()
   })
   // console.log(ac.pc.input)
   function setPlace() {
    map.clearOverlays() // 清除地图上所有覆盖物
    function myFun() {
     th.userlocation = local.getResults().getPoi(0).point // 获取第一个智能搜索的结果
     map.centerAndZoom(th.userlocation, 18)
     map.addOverlay(new BMap.Marker(th.userlocation)) // 添加标注
    }

    var local = new BMap.LocalSearch(map, { // 智能搜索
     onSearchComplete: myFun
    })
    local.search(myValue)

    // 测试输出坐标(指的是输入框最后确定地点的经纬度)
    map.addEventListener('click', function(e) {
     // 经度
     console.log(th.userlocation.lng)
     // 纬度
     console.log(th.userlocation.lat)
    })
   }
  },)
  },
  // 新增小区 点击的地址增加进list
  add_housing() {
   this.add_housing_list.push(this.city)
  },
  // 删除小区
  delete_housing(index) {
   // console.log(index)
   this.add_housing_list.splice(index, 1)
  },
}
}
</script>

<style scoped>
.housingList{
 margin-top:20px;
}
.delete_button{
  color: #409EFF;
  text-decoration: underline;
  border:none;
  background:#fff;
  cursor: pointer;
  margin-left:20px;
}

.el-input{
  width: 800px;
 }
 .housing_input .el-input{
  width: 730px;
 }

 #allmap{
  width: 400px;
  height: 400px;
  font-family: "微软雅黑";
  display: none;
}

</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Vue的百度地图插件尝试使用

    百度地图插件 安装 CDN全局安装 <script src="https://unpkg.com/vue-baidu-map"></script> 插件的引入 Vue.use(VueBaiduMap.default, { ak: 'YOUR_APP_KEY', }) ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apico... 地图视图 BmView 是用于渲染百度地图实例可视化区域的容器 使用 Bmview 渲

  • 详解vue项目中调用百度地图API使用方法

    步骤一:申请百度地图密钥: JavaScript API v1.4以及以前的版本无序申请秘钥(ak),自v1.5版本开始需要先申请秘钥(ak),才可以使用,如需获取更高的配额,需要申请  认证企业用户.百度地图API 链接地址:http://lbsyun.baidu.com/apiconsole/key 步骤二:在index.html中添加百度地图JavaScript API接口: <script src="http://api.map.baidu.com/api?v=1.4"

  • vue百度地图 + 定位的详解

    vue 百度地图 + 定位 前提需要自己有百度的密钥,如没有可以去百度地图申请 一.在主目录下的index.html引入js,例如:   二.在webpack.base.conf.js配置文件中配置BMap,在module.exports 中与entry平级,例如: 三.在项目中引入BMap: 四.代码: <template> <div class="home"> <div id="allmap" class="allmap&

  • vue.js的vue-cli脚手架中使用百度地图API的实例

    第一步,去百度地图开发者申请密钥. 1.申请密钥(百度地图开放平台-->开发文档-->web开发-->JavaScript  API-->立即使用-->创建应用) 2.密钥申请成功后 第二步,在项目的需要模板中引入,具体如下: 项目路径 其中index.html存放地图链接,代码如下 在百度地图开放平台 服务介绍中 选择我们所需要的地图类型  demo演示可查看 选择我们所需哪种百度地图的类型:http://lbsyun.baidu.com/index.php?title=j

  • vue项目中使用百度地图的方法

    1.在百度地图申请密钥: http://lbsyun.baidu.com/  将 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=密钥" ></script> 中的 密钥替换成你申请的,在 vue项目的index.html引用. 2. 在build 文件下下的 webpack.base.conf.js贴入代码 externals: {

  • 浅谈Vue下使用百度地图的简易方法

    Vue下使用百度地图的简易方法,分享给大家,具体如下: 最近的项目里面,需要用到将具体地址转换成百度坐标系的经纬度,需求比较简单,所以就没有采用GitHub里面的百度Vue插件. 废话不说,直接贴出代码: 引入:在需要用到百度地图的组件里面直接引入 export default { methods: { loadBMapScript () { let script = document.createElement('script'); script.src = 'http://api.map.b

  • vue中使用heatmapjs的示例代码(结合百度地图)

    业务需求:将heatmap引入页面中,做成一个可引入的框架,使用于所有页面.代码如下. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .heatmap { width:1900px; height:1900px; } </style> <script src="js/h

  • 2种在vue项目中使用百度地图的简单方法

    地图在项目中用得很多,最近也用了几次,好长时间不用都记不清了,闲暇时整理了vue里使用百度地图的2种方法,方便自己查看,也分享给大家,希望可以帮助有需要的人. 普遍的方法是: 1.index.html 中引入 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script> 2.新建个组件maps 注意 :不要把组件命名为

  • 详解vue.js下引入百度地图jsApi的两种方法

    前言 今天有个项目需要用到百度地图,一般我们在移动端使用百度地图,都是直接通过这样的方式,直接引入百度地图的jsApi. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=D9b45bc6f98deafc489e9ac1bc7f7612"></script> 这种方法的原理,就是直接给全局widow对象添加一个BMap对象,从而可以使我们

  • Map.vue基于百度地图组件重构笔记分享

    Map.vue是为iview组件开发的一个基于百度地图的组件,实现了点是否在框内的判断,画多边形覆盖物,添加自定义富文本标记物等功能. 第一步:重构自定义的富文本对象,设置为全局对象. 原代码的富文本对象是声明在addResource这个方法里面的,代码结构非常复杂,在beforeCreate这个钩子函数里面申明为全局的,就可以多次复用,不需要重复声明来了, 否则,每调用一次paintPolygon方法,都要重新声明一次,非常麻烦,效率太低下. 原代码是在父组件中处理好这个富文本对象需要的数据,

随机推荐