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 相关文章推荐
Javascript计算时间差的函数分享
Jul 04 Javascript
Jquery时间验证和转换工具小例子
Jul 01 Javascript
JavaScript实现点击按钮就复制当前网址
Dec 14 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
Apr 20 Javascript
bootstrap table小案例
Oct 21 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
Jan 13 Javascript
详解JS中的attribute属性
Apr 25 Javascript
利用Javascript开发一个二维周视图日历
Dec 14 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
vux uploader 图片上传组件的安装使用方法
May 15 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
Jul 28 Javascript
layui使用及简单的三级联动实现教程
Dec 01 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设计聊天室步步通
2006/10/09 PHP
php jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
ext 代码生成器
2009/08/07 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
python实现百度关键词排名查询
2014/03/30 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
函授毕业自我鉴定
2013/12/19 职场文书
春节联欢会主持词
2014/03/24 职场文书
党员创先争优心得体会
2014/09/11 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
预备党员转正材料
2014/12/19 职场文书
Node与Python 双向通信的实现代码
2021/07/16 Javascript