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

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


百度地图web 关键字输入智能提示 省市区限制_第1张图片


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

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里也有控制,具体如下:


 
 


  
@*                                    
请输入*@ @*
*@


上张改后的图:


百度地图web 关键字输入智能提示 省市区限制_第2张图片


百度地图web 关键字输入智能提示 省市区限制_第3张图片





你可能感兴趣的:(Others)