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 相关文章推荐
DWR实现模拟Google搜索效果实现原理及代码
Jan 30 Javascript
jQuery元素的隐藏与显示实例
Jan 20 Javascript
JavaScript基本语法讲解
Jun 03 Javascript
详解JavaScript中setSeconds()方法的使用
Jun 11 Javascript
javascript生成不重复的随机数
Jul 17 Javascript
详解JavaScript权威指南之对象
Sep 27 Javascript
JS前端笔试题分析
Dec 19 Javascript
js实现常见的工具条效果
Mar 02 Javascript
利用JavaScript实现栈的数据结构示例代码
Aug 02 Javascript
JavaScript日期工具类DateUtils定义与用法示例
Sep 03 Javascript
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
vue自定义组件实现双向绑定
Jan 13 Vue.js
原生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的curl实现get和post的代码
2008/08/23 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
php封装的验证码类分享
2017/02/26 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
jQuery表格插件datatables用法总结
2014/09/05 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
Python 的内置字符串方法小结
2016/03/15 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
Python中字符串的修改及传参详解
2016/11/30 Python
使用requests库制作Python爬虫
2018/03/25 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
Python3 中作为一等对象的函数解析
2019/12/11 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
Python函数参数分类原理详解
2020/05/28 Python
python实现图像外边界跟踪操作
2020/07/13 Python
python实现图片转字符画的完整代码
2021/02/21 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
工商企业管理应届生求职信
2013/11/03 职场文书
中学生演讲稿
2014/04/26 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
建设工程授权委托书
2014/09/22 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫