<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<title>百度地图之自动提示--autoComplete</title>
</head>
<body>
<button id="btn1">将深圳设置为检索区域</button>
<button id="btn2">将上海设置为检索区域</button>
<input id="register2suggestId" size="30" type="text" class="w-100-nick" placeholder="请输入"/>
<div id="register2map" style="width:300px;height:200px;"></div>
<script src="http://api.map.baidu.com/api?v=2.0&ak=ZUHewhg0KDCnZa5emK9hxRib&callback=init"></script>
<script> window.windowMapBusiness = {
//创建和初始化地图函数:
initMap: function (id, addr, s) {
this.createMap(id, addr, s);//创建地图
this.setMapEvent();//设置地图事件
this.addMapControl();//向地图添加控件
},
//创建地图函数:
createMap: function (id, addr, s) {
s = s ? s : 8;
window.map = new BMap.Map(id);// 将map变量存储在全局 在百度地图容器中创建一个地图
if (addr) {
map.centerAndZoom(addr, s);//设定地图的中心点和坐标并将地图显示在地图容器中
} else {
var geolocation = new BMap.Geolocation(); //实例化定位对象。
geolocation.getCurrentPosition(function (r) { //定位结果对象会传递给r变量 r.point.lng 经度 r.point.lat 纬度
if (this.getStatus() == BMAP_STATUS_SUCCESS) { //通过Geolocation类的getStatus()可以判断是否成功定位。
map.centerAndZoom(r.point, s);//设定地图的中心点和坐标并将地图显示在地图容器中
var mk = new BMap.Marker(r.point); //基于定位的这个点的点位创建marker
map.addOverlay(mk); //将marker作为覆盖物添加到map地图上
map.panTo(r.point); //将地图中心点移动到定位的这个点位置。注意是r.point而不是r对象。
} else {
map.centerAndZoom('广东省深圳市', s);//设定地图的中心点和坐标并将地图显示在地图容器中
}
}, {enableHighAccuracy: true});
}
},
//地图事件设置函数:
setMapEvent: function () {
map.enableScrollWheelZoom();//启用地图滚轮放大缩小
map.enableKeyboard();//启用键盘上下左右键移动地图
//map.disableDragging(); //禁止拖拽
// map.enableDragging(); // 开启拖拽
map.enableInertialDragging(); // 开启惯性拖拽
},
//地图控件添加函数:
addMapControl: function (sc) {
//向地图中添加缩放控件
var ctrl_nav = new BMap.NavigationControl({
anchor: BMAP_ANCHOR_TOP_LEFT,
type: BMAP_NAVIGATION_CONTROL_LARGE
});
map.addControl(ctrl_nav);
//向地图中添加缩略图控件
if (sc) {
var ctrl_ove = new BMap.OverviewMapControl({
anchor: BMAP_ANCHOR_BOTTOM_RIGHT,
isOpen: 1
});
map.addControl(ctrl_ove);
//向地图中添加比例尺控件
var ctrl_sca = new BMap.ScaleControl({
anchor: BMAP_ANCHOR_BOTTOM_LEFT
});
map.addControl(ctrl_sca);
}
},
// 设置单个标注-有单行提示文字
addMarker: function (addr, sc, lf, top) {
map.clearOverlays();//清除所有标注
new BMap.Geocoder().getPoint(addr, function (point) {
if (point) {
var sc = sc ? sc : 8,
lf = lf ? lf : 10 - addr.length * 6,//百度地图标注字体12px
top = top ? top : -20,
address = new BMap.Point(point.lng, point.lat);
map.centerAndZoom(address, sc);
var marker = new BMap.Marker(point);
map.addOverlay(marker);
marker.setLabel(new BMap.Label(addr, {offset: new BMap.Size(lf, top)}));
}
});
}, //处理地址--传入地址、函数 处理经纬度等 执行环境window 赋值通过scope 如 $scope.Lon=point.lng; $scope.Lat=point.lat;
responseAddr: function (addr, fun) {
new BMap.Geocoder().getPoint(addr, function (point) {
if (point) {//point.lng point.lat
fun(point);
}
});
},
//百度地图自动提示 -(未解决)还是检索的上一次的区域
autoComplete: function (suggestId, setLocation, keywords, sc, lf, top) {// id必填 keywords-array 其余-string
var me = this,
//建立一个自动完成的对象
ac = new BMap.Autocomplete({
"input": suggestId, //输入框id
"location": setLocation//设定返回结果的所属范围
}),
iptTrigger = document.getElementById(suggestId); //删除多余的元素,但百度地图自动生成的js报错 报错并不影响提示功能 暂设置为隐藏多余元素
function hideRestAcBox() {
var elm = Array.prototype.slice.call(document.getElementsByClassName('tangram-suggestion-main'));
if (elm.length) {
elm.forEach(function (v, i) {
// v.parentNode.removeChild(v);
v.style.zIndex = -1;
v.style.visibility = 'hidden';
});
elm[elm.length - 1].style.zIndex = 999;
elm[elm.length - 1].style.visibility = 'visible';
}
} function hideAcBox() {
var elm = Array.prototype.slice.call(document.getElementsByClassName('tangram-suggestion-main'));
elm.forEach(function (v, i) {
v.style.zIndex = -1;
v.style.visibility = 'hidden';
});
} //输入框的值控制 提示信息列表容器显示隐藏
function boxHide() {
console.log(this.value);
if (this.value) {
if (keywords) {//发起某个关键字的提示请求,会引起onSearchComplete的回调
ac.search.apply(ac, keywords);
}
hideRestAcBox();
} else {
hideAcBox();
}
} iptTrigger.oninput = boxHide;//非ie
iptTrigger.onpropertychange = boxHide;//ie
//鼠标点击下拉列表后的事件
ac.addEventListener("onconfirm", function (e) {
hideAcBox();
var _value = e.item.value;
var myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
console.log(myValue);
me.addMarker(myValue, sc, lf, top);
});
} }; document.getElementById('btn1').onclick = function () {
console.log(1); windowMapBusiness.autoComplete('register2suggestId', '深圳市', ['大厦', '楼', '大学', '校区', '学院', '中专', '中学', '小学', '幼儿园']); };
document.getElementById('btn2').onclick = function () {
console.log(2); windowMapBusiness.autoComplete('register2suggestId', '上海市', ['大厦', '楼', '大学', '校区', '学院', '中专', '中学', '小学', '幼儿园']); }; setTimeout(function () {
windowMapBusiness.initMap('register2map', '深圳');
}, 1000);
</script>
</body>
</html>

百度地图之自动提示--autoComplete的更多相关文章

  1. 百度地图的demo提示key验证错误!错误码:230;

    在已经有BaiduMap的APIKey后使用AndroidStudio导入Baidu地图的as版的demo,提示key验证错误!错误码:230; 首先,因为百度地图demo中用自己的keystore文 ...

  2. 使用百度地图API自动获取地址和经纬度

    先上效果图,这是直接点击获取经纬度和地址的.没有做搜索的功能. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...

  3. echarts 中国地图 数据自动提示

    mounted() { // 首先每种图是根据series -->type决定的 eg:bar--柱状图 line 折线图 pie饼图 map地图等等三部曲 跟着走 // @第一步都是初始化 v ...

  4. 顾维灏谈百度地图数据采集:POI自动处理率达90%

    顾维灏谈百度地图数据采集:POI自动处理率达90%   发布时间:2015-12-21 22:37        来源:cnsoftnews.com        作者:   百度地图还创新研发高精地 ...

  5. Vue中加载百度地图

    借助百度地图的 LocalSearch 和 Autocomplete 两个方法 实现方式:通过promise以及百度地图的callback回调函数 map.js 1 export function M ...

  6. 百度地图api 实例 自动提示 并计算两地的行驶距离

    百度地图api 实例 自动提示 并计算两地的行驶距离 <!DOCTYPE html> <html> <head> <meta http-equiv=" ...

  7. 百度地图API提示"230错误 APP Scode校验失败"

    笔者近2天在 Android Studio上玩了一下百度地图,碰到了常见的"230错误 APP Scode校验失败",下面我来介绍一下具体的解决办法. 1.在andriodstud ...

  8. 百度地图API 级别自动缩放

    今天做一个基于百度地图API的小项目 查了很长时间apid都没有找到地图呈现出来的时候地图按坐标的多少自动缩放显示的等级比例,特此记录笔记!var points = [point1, point2,p ...

  9. 百度地图API显示多个标注点,解决提示信息问题以及给标注增加地图旁的文字连接提示的另一种解决办法

    原文:百度地图API显示多个标注点,解决提示信息问题以及给标注增加地图旁的文字连接提示的另一种解决办法 公司的网站改版要求在一个页面显示百度地图.上面要同时显示很多标注点,标注点当然要有提示信息嘛,提 ...

随机推荐

  1. 关于python接口基础到进阶随笔

    想了很久,闲来无事,今天想了下还是总结了下写下来,部分参考官方源码理解,还有就是这么久的理解, 如果觉得有帮助请记得点赞 先讲下接口url组成拿后台服务为例 通常一个后台请求url格式: http:/ ...

  2. 安卓 通过www读取Application.persistentDataPath

    今天在读取Application.persistentDataPath路径下的图片时,在前面加上“file:///” 例如 #if UNITY_EDITOR || UNITY_STANDALONE r ...

  3. SQL Server 数据库每个表占用的空间、大小

    查看MSSQL数据库每个表占用的空间大小 sp_spaceused显示行数.保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间. 语法sp_spaceused ...

  4. C/S模式,发布/订阅模式和PUSH/PULL模式(上)

    CS模式(客户端/服务器模式) 最场景的信息传递模式,也称为Request/Response模式,或者调用模式.http/https协议即此模式.因为最常用所以大家一般都比较熟悉,这里不重点讲了,大家 ...

  5. C#设计模式 —— 工厂模式

    . 工厂模式同样是项目中最常用的设计模式,工厂模式中又分为简单工厂,工厂方法,抽象工厂.下面我们由简单的开始逐一介绍. 1.简单工厂模式 简单工厂又被称为静态工厂,在设计模式中属于创建型模式.主要解决 ...

  6. iOS之LLDB调试器

    LLDB被定位为下一代的高性能调试器,默认内置于Xcode IDE内, 支持在PC.iOS设备以及模拟器上调试C.Objective-C和C++. 关于LLDB的官方介绍:LLDB 常用命令: 1.  ...

  7. Ajax数据获取(未完待续。。。)

    @:网站内容通过Ajax获取数据然后重新渲染产生 这种时候我们如何拿到自己想要的数据: 1:打开检查,在network选项中查看浏览器发送了哪些请求.(清空,再刷新,得到新的请求) 在截图的左下角可以 ...

  8. centos6 命令界面切换到图形界面

    要进入图形界面,首先要安装.所以应该先执行 yum groupinstall "X Window System" -y yum groupinstall "Desktop ...

  9. bootstrap世界探索1——山川河流(文字排版)

    世界到底是什么?其实世界很简单,正所谓一花一世界,一树一菩提,世界就在我们身边.造物神是伟大的,在我看来无论是HTML,css,js都可以看作是一个世界,但是他们是构成宏观世界不可或缺的,正如IU框架 ...

  10. 在Java中发送http的post请求,设置请求参数等等

    前几天做了一个定时导入数据的接口,需要发送http请求,第一次做这种的需求,特地记一下子, 导包 import java.text.SimpleDateFormat;import java.util. ...