百度地图(15)-自动完成

1. 百度地图提供了关键字搜索功能,它是基于自动完成和本地搜索来完成的,先使用

BMap.Autocomplete 进行关键字自动完成,然后根据结果内容使用 BMap.LocalSearch 进行定位。

 

2. 代码

AutoComplete 中的 input 是输入框的ID,location 则指向当前地图对象。

onhighlight 是指鼠标或者键盘移动,移到某条记录高亮时触发的事件。

onconfirm 是指选择某条记录时触发的事件。确定后,在地图中标记当前选择记录的位置。setPlace 

 1 var ac = new BMap.Autocomplete({
 2   "input":"suggestId"
 3   ,"location":map
 4 })
 5 
 6 ac.addEventListener('onhighlight',function (e) {
 7   var str = "";
 8   var _value = e.fromitem.value;
 9   var value = "";
10   if(e.fromitem.index > -1){
11     value = _value.province + _value.city + _value.district + _value.street + _value.business;
12   }
13   str = "FromItem<br />index=" + e.fromitem.index + "<br />value=" + value;
14   value = "";
15   if(e.toitem.index > -1){
16     _value = e.toitem.value;
17     value = _value.province + _value.city + _value.district + _value.street + _value.business;
18   }
19 
20   str += "<br />ToItem<br />index=" + e.toitem.index + "<br />value = " + value;
21   G("searchResultPanel").innerHTML = str;
22 
23 });
24 
25 var myValue ;
26 ac.addEventListener("onconfirm",function (e){
27   var _value = e.item.value;
28   myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
29   G("searchResultPanel").innerHTML = "onconfirm<br />index = " + e.item.index + "<br />myValue" + myValue;
30   setPlace();
31 });
32 
33 function setPlace(){
34   map.clearOverlays();
35   function myFun() {
36     var pp = local.getResults().getPoi(0).point;
37     map.centerAndZoom(pp,18);
38     map.addOverlay(new BMap.Marker(pp));
39   }
40   var local = new BMap.LocalSearch(map,{
41     onSearchComplete:myFun
42   });
43   local.search(myValue);
44 }

 

3. 页面显示

 

 

 

 

 

 

4. 参考代码

https://github.com/WhatGIS/bdMap

 
posted @ 2021-04-21 15:54  googlegis  阅读(1089)  评论(0编辑  收藏  举报

坐标合肥,非典型GIS开发人员 GitHub