2019独角兽企业重金招聘Python工程师标准>>>

先看图

然后点确定,居然下拉框又被触发了,而且在添加页面各种输入框只要一输入文字就会触发地图下拉框展示,很恶心的一个bug,不知道有没有人遇到过。

从百度api贴 的代码,自己有根据需求修改过,大致一样

  return document.getElementById(id)}var ac = new BMap.Autocomplete( // 建立一个自动完成的对象{'input': 'suggestId','location': map})ac.addEventListener('onhighlight', function(e) { // 鼠标放在下拉列表上的事件var str = ''var _value = e.fromitem.valuevar value = ''if (e.fromitem.index > -1) {value = _value.province + _value.city + _value.district + _value.street + _value.business}str = 'FromItem<br />index = ' + e.fromitem.index + '<br />value = ' + valuevalue = ''if (e.toitem.index > -1) {_value = e.toitem.valuevalue = _value.province + _value.city + _value.district + _value.street + _value.business}str += '<br />ToItem<br />index = ' + e.toitem.index + ' <br />value = ' + valueG('searchResultPanel').innerHTML = str})var myValueac.addEventListener('onconfirm', function(e) { // 鼠标点击下拉列表后的事件var _value = e.item.valuemyValue = _value.province + _value.city + _value.district + _value.street + _value.businessG('searchResultPanel').innerHTML = 'onconfirm<br />index = ' + e.item.index + '<br />myValue = ' + myValuesetPlace()})function setPlace() {map.clearOverlays() // 清除地图上所有覆盖物function myFun() {var pp = local.getResults().getPoi(0).point // 获取第一个智能搜索的结果map.centerAndZoom(pp, 18)map.addOverlay(new BMap.Marker(pp)) // 添加标注console.log(pp)console.log('获取位置具体地址经纬度', 'lng' + pp.lng + 'lat' + pp.lat)addLng = pp.lngaddLat = pp.lat// 经纬度赋值到页面var jing_du = document.getElementById('jing_du')var wei_du = document.getElementById('wei_du')jing_du.innerHTML = addLng + ','wei_du.innerHTML = addLat}var local = new BMap.LocalSearch(map, { // 智能搜索onSearchComplete: myFun})local.search(myValue)console.log('获取位置具体地址', myValue)}

虽然能实现需求,但这个触发的弹框真的很无奈,后面经过同事提醒,结合类参考http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html#a7b0,

然后自己写了个搜索框,我是采用的vue+elementUI,具体代码如下:

html

<el-form-item label="详细地址"><div id="r-result"><el-autocompletewidth="100%"size="small"popper-class="my-autocomplete"v-model="shopaddress":fetch-suggestions="querySearch"placeholder="请输入内容":trigger-on-focus="false"@select="handleSelect"><template slot-scope="{ item }"><div class="name">{{ item.address}}</div><span class="addr">{{ item.address }}</span></template></el-autocomplete></div><template v-if="ruleForm.longitude && ruleForm.latitude"><div><span id="jing_du">{{ruleForm.longitude}}</span><span id="wei_du">{{ruleForm.latitude}}</span></div></template><div id="l-map"></div>
</el-form-item>

script

export default {name: 'shopManage_add',data() {return {listLoading: true,ruleForm: {address: '',longitude: '', // 经度latitude: '', // 纬度},map: null,local: null,localList: [], // 搜索地址列表shopaddress: '', // 详细地址loading: false,restaurants: []}},watch: {shopaddress(val) {this.local.search(val)}},mounted() {this.map = new BMap.Map('l-map')// 修改状态this.baiduMap()if (this.$route.query.operation === 'edit') {this.isEdit = truethis.toGetList()} else {this.isEdit = false}this.togetAddressProvinces()},methods: {querySearch(queryString, cb) {var restaurants = this.restaurantsvar results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants// 调用 callback 返回建议列表的数据cb(results)},createFilter(queryString) {return (restaurant) => {return restaurant}},handleSelect(item) {this.map.clearOverlays() // 清除地图上所有覆盖物this.shopaddress = item.addressthis.ruleForm.longitude = item.point.lngthis.ruleForm.latitude = item.point.latthis.ruleForm.address = item.addressconst pp = item.point // 获取第一个智能搜索的结果this.map.centerAndZoom(pp, 15)this.map.addOverlay(new BMap.Marker(pp)) // 添加标注},baiduMap() {// 百度地图API功能// this.map = new BMap.Map('l-map')var _this = thisvar point = new BMap.Point(addLng, addLat)_this.map.centerAndZoom(point, 12) // 初始化地图,设置城市和地图级别。_this.map.addControl(new BMap.ScaleControl({ anchor: BMAPANCHORTOPLEFT }))_this.map.addControl(new BMap.NavigationControl())if (_this.$route.query.operation === 'edit') {var marker = new BMap.Marker(point) // 创建标注_this.map.addOverlay(marker)} else {var geolocation = new BMap.Geolocation()// 根据IP定位当前经纬度geolocation.getCurrentPosition(function(r) {if (this.getStatus() === BMAPSTATUSSUCCESS) { // BMAP_STATUS_SUCCESS    检索成功。对应数值“0”。var mk = new BMap.Marker(r.point)_this.map.addOverlay(mk)_this.map.panTo(r.point)// alert('您的位置:'+r.point.lng+','+r.point.lat);}}, {enableHighAccuracy: true})}this.local = new BMap.LocalSearch(this.map, {onSearchComplete: (res) => {if (this.local.getStatus() === BMAPSTATUSSUCCESS) {this.restaurants = []for (let i = 0; i < res.getCurrentNumPois(); i++) {this.restaurants.push(res.getPoi(i))}console.log('restaurants', this.restaurants) // 搜索触发的地址列表}}})// map.enableScrollWheelZoom(true) // 开启鼠标滚轮缩放}},components: {}
}

嗯,问题解决!

转载于:https://my.oschina.net/lemonfive/blog/1932888

vue调用百度地图API输入提示示例下拉列表一直被触发问题相关推荐

  1. vue调用百度地图API实现点击相应位置切换地图定位

    vue调用百度地图API实现点击相应位置切换地图定位 1.需求分析 在页面显示地图,初始状态显示上海市,地图上有特定地点的标注. 左侧为建筑(地点)列表,点击某个地点右侧地图定位到其地理位置并显示具体 ...

  2. vue调用百度地图API

    安装 $ npm install vue-baidu-map --save 全局注册 在main.js 里面引入以下代码 import BaiduMap from 'vue-baidu-map'Vue ...

  3. 如何调用百度地图API

    前言 要调用百度地图API,步骤操作如下 注册并创建一个API密钥.您可以在百度地图API控制台上创建您的密钥. 选择要使用的API服务.百度地图API提供了多种服务,包括地图展示.路线规划.地点搜索 ...

  4. python调用百度地图API爬取西安市POI数据

    任务前提 做该项目之前,首先得有基础知识: 编程语言:python 编译工具:PyCharm 网络爬虫相关知识,xpath库,numpy,pandas等库. 任务准备: 去百度地图开放平台申请密匙:h ...

  5. java 地图api接口_Java调用百度地图API

    本实战代码将使用百度地图的接口来实现以下功能: 1.确定输入地址的坐标 2.两个坐标的距离 其他的话,还要使用百度账户申请相关的api,具体见: http://lbsyun.baidu.com/ind ...

  6. 百度地图AK申请注意+百度地图API生成热力图+调用百度地图API自动获取经纬度和地址

    文章目录 一.百度地图AK密钥申请 二.调用百度地图API生成热力图 三.调用百度地图API自动获取经纬度和地址 一.百度地图AK密钥申请 点击百度地图API控制台,输入登录账户,即可进入,若账户未完 ...

  7. C#调用百度地图API入门解决BMap未定义问题

    本文主要是最近帮助好友研究JavaScript的百度地图API,同时显示到C# Winform界面.同时遇到了BMap未定义的错误(BMap is not defined)及解决方法.以前写过基于An ...

  8. c语言api获取百度地图,H5调用百度地图API获取地理位置

    //获取当前位置 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ alert ...

  9. Python调用百度地图api路径查询

    通过调用百度地图api获取两个地点的距离和时间.参数详见百度地图api官方文档. # -*- coding: utf-8 -*- """ Created on Thu M ...

最新文章

  1. 压缩视频 html5播放,将HTML5视频呈现为Canvas正在压缩图像
  2. Windows保护模式学习笔记(十)—— TLB
  3. HDU 2255 二分图最佳匹配 模板题
  4. 2016最佳温情小说:雨还在下....
  5. [个人网站搭建]·Django增加评论功能(Python3)
  6. pycharm console日志如何输出到txt_Django实战2-自动化运维之配置管理-04:知识扩展-logging日志模块...
  7. matlab画2fsk频谱,2fsk信号调制解调频谱的matlab仿真
  8. 禅道项目管理软件测试功能模块,禅道使用分享:禅道用例管理流程
  9. 个人企业信息多用户入驻智能电子名片小程序开发
  10. C++ 笔试面试题 ~[有答案]
  11. 深圳计算机免考申请在哪,深圳自考申请免考要什么条件
  12. java全栈开发工程师_谈谈我对Java(J2EE)全栈工程师的理解
  13. Java工程师待遇怎么样?
  14. 读书笔记app推荐——只为让你的生活更高效
  15. Linux Shell字符串变量头尾去除空格
  16. Java版本和JDK版本
  17. TypeError: first argument must be an iterable of pandas objects, you passed an object of type “DataF
  18. 基于微信小程序的物流仓储系统-计算机毕业设计
  19. C#.net 地图控件开发(七) 地图符号,几何图形样式Symbol
  20. 自考笔记-创业学03(小白简写)

热门文章

  1. php heahd,heaheader phpder 详解
  2. post传值php取不到数据,post请求中的参数形式和form-data提交数据时取不到的问题...
  3. java反射原理三种,Java反射的原理,作用
  4. 一加7充电_夜话丨一加7超级快充明天见
  5. 用计算机画函数图像教案,信息技术应用 用计算机画函数图象教案1
  6. 虚拟机centos7忘记密码怎么办_电脑忘记密码怎么办
  7. 第十六届全国大学智能车竞赛华南赛区成绩汇总
  8. 210328卡式水分开阶段总结
  9. 智能车竞赛云端比赛第三天:一场在家具建材广场中的智能车比赛
  10. mysql 查询rowno_C# Mysql 查询 Rownum的解决方法