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 相关文章推荐
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
Nov 24 Javascript
同一个表单 根据要求递交到不同页面的实现方法小结
Aug 05 Javascript
写给想学习Javascript的朋友一点学习经验小结
Nov 23 Javascript
js正则表达式的使用详解
Jul 09 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
Jan 14 Javascript
jquery动态增加删减表格行特效
Nov 20 Javascript
String字符串截取的四种方式总结
Nov 28 Javascript
js实现延迟加载的几种方法
Apr 24 Javascript
React中jquery引用的实现方法
Sep 12 jQuery
js布局实现单选按钮控件
Jan 17 Javascript
Vue实现浏览器打印功能的代码
Apr 17 Javascript
在vue中实现嵌套页面(iframe)
Jul 30 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破解防盗链图片的一个简单方法
2014/06/07 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
纯JS实现轮播图
2017/02/22 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
python3将视频流保存为本地视频文件
2018/06/20 Python
python实现随机漫步算法
2018/08/27 Python
python得到windows自启动列表的方法
2018/10/14 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Python中的引用知识点总结
2019/05/20 Python
Python面向对象之Web静态服务器
2019/09/03 Python
python属于解释语言吗
2020/06/11 Python
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
应届毕业生求职自荐书
2014/01/03 职场文书
有创意的广告词
2014/03/18 职场文书
活动总结新闻稿
2014/08/30 职场文书
2016春节家属慰问信
2015/03/25 职场文书
司机岗位职责范本
2015/04/10 职场文书
解决WINDOWS电脑开机后桌面没有任何图标
2022/04/09 数码科技
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang