百度地图web api 输入关键字提示仅仅给了一个很简单的demo,而且并未提供任何条件限制的api,今天遇到了个比较难受的问题是,网站本身是省市级3级区域选择,然后后面输入详细地址后要在百度地图上显示位置,就是如图所示的情况

很显然,我要在选择省市级后输入准确地址,比如我选择北京市东城区了,我要在东城区里面找成都饭店。。。你一输成都,这个智能提示会在全国范围内搜索,而且事件是自动注册在

var ac = new BMap.Autocomplete( //建立一个自动完成的对象
                                        {
                                            "input": "addr2",
                                            "location": map
                                        });

这个位置的,就是通过input,百度的js对addr2这个input注册监听事件,所以根本是没法改变条件的,唯一的办法就是拦截

百度api这个地方做得还比较明智,就是无论你是通过键盘输入还是js输入,都是触发智能提示的事件,那我就通过一个input(addr),把addr2中的val改为 省市区+addr,监听addr的onkeyup事件,onkeydown和百度地图的监听有冲突,把addr2 的位置用addr给覆盖掉,不能display:none,必须占位,不然百度的提示框位置会有问题。并且在选择智能提示后,详细地址不显示省市区的文字,如下的js里也有控制,具体如下:

 <input type="inputText" tabindex="7" id="addr2" name="addr2" placeholder="请输入具体的地址" style="width: 277px;visibility: hidden"/><input type="inputText" tabindex="7" id="addr" name="addr" placeholder="请输入具体的地址" style="width: 277px;z-index: 1;margin-left: -282px;" οnkeyup="mysearch(this)"/>
  <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=EZPCgQ6zGu6hZSmXlRrUMTpr"></script>
@*                                    <div id="r-result">请输入<input type="text" id="suggestId" value="百度" style="width: 400px;"/>*@
@*                                    </div>*@<div id="searchResultPanel" style="border: 1px solid #C0C0C0; width: 400px; height: auto; display: none;"></div><div id="l-map"></div><script type="text/javascript">function mysearch(e) {if ($('#province3').val() == '') {layer.alert('请先选择省市区');$('#addr').val('');$('#addr2').val('');}$('#addr2').val($('#province3').val() + $('#city3').val() + $('#area3').val() + $(e).val());}// 百度地图API功能function G(id) {return document.getElementById(id);}var map = new BMap.Map("l-map");map.centerAndZoom("北京", 12); // 初始化地图,设置城市和地图级别。var ac = new BMap.Autocomplete( //建立一个自动完成的对象{"input": "addr2","location": map});ac.addEventListener("onhighlight", function (e) { //鼠标放在下拉列表上的事件var str = "";var _value = e.fromitem.value;var 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 = " + value;value = "";if (e.toitem.index > -1) {_value = e.toitem.value;value = _value.province + _value.city + _value.district + _value.street + _value.business;}str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;G("searchResultPanel").innerHTML = str;});var myValue;ac.addEventListener("onconfirm", function(e) { //鼠标点击下拉列表后的事件var _value = e.item.value;myValue = _value.province + _value.city + _value.district + _value.street + _value.business;G("searchResultPanel").innerHTML = "onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;setPlace();$('#addr').val(_value.street + _value.business);});function setPlace() {map.clearOverlays(); //清除地图上所有覆盖物function myFun() {var pp = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果map.centerAndZoom(pp, 18);map.addOverlay(new BMap.Marker(pp)); //添加标注}var local = new BMap.LocalSearch(map, {//智能搜索onSearchComplete: myFun});local.search(myValue);}</script>

上张改后的图:

百度地图web 关键字输入智能提示 省市区限制相关推荐

  1. 【完全开源】百度地图Web service API C#.NET版,带地图显示控件、导航控件、POI查找控件...

    目录 概述 功能 如何使用 参考帮助 概述 源代码主要包含三个项目,BMap.NET.BMap.NET.WindowsForm以及BMap.NET.WinformDemo. BMap.NET 对百度地 ...

  2. 百度地图WEB服务-逆地理编码使用心得

    百度地图WEB服务-逆地理编码使用心得 逆地理编码接口 Postman接口请求测试 POI信息召回 Postman接口请求测试 上一篇博文写了我开发项目中最长用的正地理编码接口的博文,这次想总结一下逆 ...

  3. 百度地图WEB服务-地点检索API

    百度地图WEB服务-地点检索API 行政区划区域检索 圆形区域检索 矩形区域检索 地点检索服务(又名Place API)是百度地图开放平台提供的Web API接口服务: 该服务提供多种场景的地点(PO ...

  4. 用txt做数据源和winfrom textbox输入智能提示

    1.用txt做数据源连接字符串 //text作为数据源的链接字符串             string strConnection = @"Provider=Microsoft.Jet.O ...

  5. 百度地图Web API Python模块

    目录 百度地图Web API Python模块 描述 快速开始 调用方法 工厂模式 代理模式 对象 JsonLike __init__(json=dict(), **kwargs) __str__() ...

  6. 使用百度地图Web服务API查询地点的经纬度信息

    使用百度地图Web服务API查询地点的经纬度信息 API地理编码服务 数据 结果 API地理编码服务 地理编码服务(又名Geocoder)是一类Web API接口服务: 地理编码服务提供将结构化地址数 ...

  7. python如何爬虫获取图形上点的坐标_python调用百度地图WEB服务API获取地点对应坐标值...

    本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...

  8. python调用百度地图实现导航_python调用百度地图WEB服务API获取地点对应坐标值

    本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...

  9. 百度地图 在用户输入的省市区范围内进行关键字智能提示搜索

    现在进行表单输入地址的时候分为省市区和详细地址,省市区用citypicker插件可以轻松完成,但是输入详细地址的时候要调用百度API进行关键字智能提示,那么问题来了,如何在用户输入的省市区内进行关键字 ...

最新文章

  1. 线性回归预测PM2.5值
  2. ASP.NET 4的Demo实践:URL路由改进支持
  3. 山海树“医+药”O2O闭环 掘金8万亿市场
  4. Scanner如何接受char类型的数据
  5. oracle 01775,set Autotrace使用的问题与解决
  6. QT学习:QTime类
  7. 当面试官问我————为什么String是final的?
  8. PostgreSQL11.7逻辑复制压测
  9. 记安卓屏固件升级步骤
  10. 编译调试Apache HTTP Server
  11. js-JavaScript常见的创建对象的几种方式
  12. greensock下载_初识GreenSock的“ GSDevTools”
  13. 巧妙设置XP 家庭或小型办公网络图解
  14. github 443问题
  15. ubuntu linux目录绿色高亮问题
  16. The Little Schemer 中文版
  17. 深圳哈工大计算机系的课表,学在哈深|哈工大(深圳)学子课表大比拼,今天你满课了吗?...
  18. Swift 复数变量定义
  19. Python-元组字典集合及其内置方法
  20. java下载文件到服务器_java代码实现上传文件到文档服务器、下载文档服务器文件...

热门文章

  1. c语言布尔变量如何定义,关于布尔变量的用法(新手)
  2. opencv图片矩形网格边线_OpenCV C++(九)----几何形状的检测和拟合
  3. 一本不错的书《软件项目管理》,有感(一)
  4. 电子信息工程学生的小述
  5. 开源~~~~spring boot +vue 前后端分离 在线考试系统 加自动组卷!!!!
  6. 基于Servlet+Jsp实现的酒店客房预定管理系统分前后台
  7. java反序列化php序列化的对象
  8. 易语言dnf学习专用和软件
  9. C++学习记录---2
  10. oracle安装少服务器,安装oracle数据库服务器