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获取radio和select的属性并控制的代码
May 12 Javascript
jQuery移动和复制dom节点实用DOM操作案例
Dec 17 Javascript
javascript异步编程的4种方法
Feb 19 Javascript
BooStrap对导航条的改造实践小结
Sep 21 Javascript
jQuery的extend方法【三种】
Dec 14 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
May 08 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
Node.js 使用流实现读写同步边读边写功能
Sep 11 Javascript
react-native-video实现视频全屏播放的方法
Mar 19 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
Jan 17 Javascript
Vue 的双向绑定原理与用法揭秘
May 06 Javascript
JS PHP字符串截取函数实现原理解析
Aug 29 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 常用字符串函数总结
2008/03/15 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
php查询及多条件查询
2017/02/26 PHP
50个比较实用jQuery代码段
2011/09/18 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
校本教研工作制度
2014/01/22 职场文书
消防安全宣传标语
2014/06/07 职场文书
后进基层党组织整改方案
2014/10/25 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
教你如何使用Python Tkinter库制作记事本
2021/06/10 Python