JS百度地图搜索悬浮窗功能


Posted in Javascript onJanuary 12, 2017

这个需求的效果类似下面的截图,主要还是利用百度地图中自定义控件的功能,挺简单的。文档地址在这 http://lbsyun.baidu.com/index.php?title=jspopular

效果图:

JS百度地图搜索悬浮窗功能

代码

<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
 <style type="text/css">
  body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";font-size:14px;}
  #l-map{height:300px;width:100%;}
  #r-result{width:100%;}
 </style>
 <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>
 <title>关键字输入提示词条</title>
</head>
<body>
 <div id="l-map">
 </div>
</body>
</html>

<script type="text/javascript">
 // 百度地图API功能
 function G(id) {
  return document.getElementById(id);
 }

 var map = new BMap.Map("l-map");
 map.centerAndZoom("北京",10); // 初始化地图,设置城市和地图级别。

 // 定义一个控件类,即function
 function ZoomControl() {
  this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;
  this.defaultOffset = new BMap.Size(10, 10);
 }

 // 通过JavaScript的prototype属性继承于BMap.Control
 ZoomControl.prototype = new BMap.Control();

 // 自定义控件必须实现自己的initialize方法,并且将控件的DOM元素返回
 // 在本方法中创建个div元素作为控件的容器,并将其添加到地图容器中
 ZoomControl.prototype.initialize = function(map){
  // 创建一个DOM元素
  var div = document.createElement("div");
  div.innerHTML = '<div id="r-result">搜索地址:<input type="text" id="suggestId" size="20" value="百度" style="width:150px;" /></div><div id="searchResultPanel" style="border:1px solid #C0C0C0;width:150px;height:auto; display:none;"></div>';

  // 添加DOM元素到地图中
  map.getContainer().appendChild(div);
  // 将DOM元素返回
  return div;
 }

 // 创建控件
 var myZoomCtrl = new ZoomControl();
 // 添加到地图当中
 map.addControl(myZoomCtrl);


 var ac = new BMap.Autocomplete( //建立一个自动完成的对象
  {"input" : "suggestId"
  ,"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();
 });

 function setPlace(){
  map.clearOverlays(); //清除地图上所有覆盖物
  function myFun(){
   var pp = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果
   map.centerAndZoom(pp, 14);
   map.addOverlay(new BMap.Marker(pp)); //添加标注
  }
  var local = new BMap.LocalSearch(map, { //智能搜索
   onSearchComplete: myFun
  });
  local.search(myValue);
 }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 变量类型转换常用函数与代码[比较全]
Dec 01 Javascript
javascript操作css属性
Dec 30 Javascript
jquery分页对象使用示例
Apr 01 Javascript
jquery实现标题字体变换的滑动门菜单效果
Sep 07 Javascript
Google 地图控件集详解及实例代码
Aug 06 Javascript
浅谈JS使用[ ]来访问对象属性
Sep 21 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
Feb 13 Javascript
简单快速的实现js计算器功能
Aug 17 Javascript
Javascript快速实现浏览器系统通知
Aug 26 Javascript
微信小程序 页面跳转事件绑定的实例详解
Sep 20 Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
Dec 19 Javascript
原生js实现焦点轮播图效果
Jan 12 #Javascript
详解能在多种前端框架下使用的表格控件
Jan 11 #Javascript
vuejs父子组件通信的问题
Jan 11 #Javascript
bootstrap 表单验证使用方法
Jan 11 #Javascript
原生js实现无缝轮播图效果
Jan 11 #Javascript
Bootstrap 填充Json数据的实例代码
Jan 11 #Javascript
原生js实现放大镜效果
Jan 11 #Javascript
You might like
php面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
jQuery 方法大全方便学习参考
2010/02/25 Javascript
JQuery里选择超链接的实现代码
2011/05/22 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
jQuery列表检索功能实现代码
2017/07/17 jQuery
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
Python计算回文数的方法
2015/03/11 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
医学生自我鉴定范文
2013/11/08 职场文书
机械设计专业应届生求职信
2013/11/21 职场文书
中医学专业自荐信范文
2014/04/01 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
休假证明书
2015/06/24 职场文书
2015最新民情日记范文
2015/06/26 职场文书
教师节表彰会主持词
2015/07/06 职场文书
浅析MongoDB之安全认证
2021/06/26 MongoDB
HTML中的表格元素介绍
2022/02/28 HTML / CSS
GO中sync包自由控制并发示例详解
2022/08/05 Golang