百度地图在web中的使用(一)
百度地图在web中的使用(js)
背景:在公司做一个地理位置的自定义字段,需要用到地图来获取经纬度和地址,在这选择了百度地图
准备工作
- 注册百度地图开发者,创建应用获取key http://lbsyun.baidu.com/
使用过程
- 引入js文件
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=生成的key"></script>
- 创建一个div容器用来显示地图:
<div id="map"></div>
- 实例化地图:
//百度地图API功能
var map = new BMap.Map("map"); //创建Map实例
- 使用百度地图:
map.centerAndZoom(new BMap.Point(116.403963, 39.915119), 12); // 初始化地图,设置中心点坐标和地图级别,北京-天安门
//添加地图类型控件
map.addControl(new BMap.MapTypeControl({
mapTypes:[
BMAP_NORMAL_MAP,
BMAP_HYBRID_MAP
]}));
map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
- 百度地图获取当前位置:(基于浏览器获取)
var geolocation = new BMap.Geolocation(); //实例化
geolocation.getCurrentPosition(function(r){ //获取当前位置方法
if(this.getStatus() == BMAP_STATUS_SUCCESS){
var mk = new BMap.Marker(r.point); //r就是获取到的信息
map.addOverlay(mk); //创建标注
map.panTo(r.point); //标注移到这个地点
alert('您的位置:'+r.point.lng+','+r.point.lat);
}
else {
alert('failed'+this.getStatus());
}
},{enableHighAccuracy: true})
- 百度地图里的智能搜索:
//内部自定义函数,根据ID获取对象
function G(id) {
return document.getElementById(id);
}
/*----------begin------*/
var ac = new BMap.Autocomplete( //建立一个自动完成的对象
{"input" : "suggestId"
,"location" : map
}
);
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(){
//搜索后点击时先清空原搜搜记录
$('#searchAddress').empty(); //之前的搜索结果清空
var local = new BMap.LocalSearch(map, { //智能搜索
onSearchComplete: myFun
});
local.search(myValue);
function myFun(){
var sp = local.getResults().getPoi(0); //获取第一个智能搜索的结果
if(sp){
var pp = sp.point;
lastSearch.lng = pp.lng;
lastSearch.lat = pp.lat; //得到搜索位置的经纬度
//搜索显示结果列表
showSearchPlace(lastSearch.lng,lastSearch.lat,local.getResults().keyword);
}else{
showSearchPlace(0, 0, '该地址百度地图解析失败')
}
}
}
- 百度地图根据经纬度获取当前地址:
/**
* 根据经纬度获取地址
* @param lng
* @param lat
*/
function getAddressBylnglat(lng, lat){
point = new BMap.Point(lng, lat); //实例化
var marker = new BMap.Marker(point);// 创建标注
map.clearOverlays(); //添加新的标注前先清除其他的标注
map.addOverlay(marker); // 将标注添加到地图中
var getData = new BMap.Geocoder(); //根据经纬度获取地址
getData.getLocation(point, function(rs){
var pointAddress = rs.addressComponents;
var address = pointAddress.province+pointAddress.city+pointAddress.district+pointAddress.street+pointAddress.streetNumber;
addTextToPoint(marker, address);//增加文字信息
marker.enableDragging(); //标注可拖拽
// 开启事件监听
marker.addEventListener("dragend", function (e) {
var x = e.point.lng; //经度
var y = e.point.lat; //纬度
//根据经纬度获取地址信息
getAddressBylnglat(x, y);
});;
//修改地图底部的地址信息
//$('#suggestId').val('');
clearAddress(); //自定义方法,清除掉之前的记录
showSearchPlace(lng, lat, address) //自定义方法,把查询到的地址和经纬度显示在页面上
});
}
- 百度地图根据经纬度和地址信息在地图中创建标注同时文字信息:
/**
* 在地图上根据查询的地址创建标注
* @param
*/
function makePoint(lng, lat, address){
var point = new BMap.Point(lng, lat);
map.centerAndZoom(point, 15); //地址显示级别
var marker = new BMap.Marker(point);// 创建标注
map.clearOverlays(); //添加新的标注前先清除其他的标注
map.addOverlay(marker); // 将标注添加到地图中
addTextToPoint(marker, address); //增加文字信息
marker.enableDragging(); //标注可拖拽
// 开启事件监听
marker.addEventListener("dragend", function (e) {
var x = e.point.lng; //经度
var y = e.point.lat; //纬度
//根据经纬度获取地址信息
getAddressBylnglat(x, y);
});
}
//标注上增加文字信息
function addTextToPoint(marker, address){
var label = new BMap.Label(address,{offset:new BMap.Size(20,-10)});
marker.setLabel(label);
}
百度地图在web中的使用(一)的更多相关文章
- 【详细教程】论android studio中如何申请百度地图新版Key中SHA1值
一.写在前面 现在越来越多的API接口要求都要求提供我们的项目SHA1值,开发版目前还要求不高,但是发布版是必定要求的.而目前定位在各大APP中也较为常见,当下主流的百度地图和高德地图都在申请的时候会 ...
- 百度地图和高德地图结合在web中的使用(二)
百度地图在web中的使用(二) 背景:在做一个关于地理位置字段时,初始位置使用百度地图获取时失败,获取的位置信息不准确,奈何产品说友商好使的啊,F12看后是采用的高德,所以在这采用高德地图获取初始位置 ...
- 在Fragment中实现百度地图,定位到当前位置(基于SDKv2.1.0)
使用最新版本的百度地图需要注意的几个地方: 1.libs文件夹下要有android-support-v4.jar.baidumapapi_v2_1_0.jar.locSDK_3.1.jar三个jar包 ...
- 【重点突破】—— 百度地图在React单页面应用中的使用
前言:百度地图是网页中使用地图的常用第三方工具,这里结合React项目中学到的应用场景总结一些使用要点. 一.在网页中嵌入百度地图 搜百度地图开放平台,注册百度开发者账号 控制台:查看应用.创建应用( ...
- JavaScript调用百度地图
在网站开发过程中,经常会调用到地图,百度地图提供Web开发.Android开发.iOS开发API及SDK,百度地图JavaScript API可帮助您在网站中构建功能丰富.交互性强的地图应用,本篇博客 ...
- 基于 Golang 完整获取百度地图POI数据的方案
百度地图为web开发者提供了基于HTTP/HTTPS协议的丰富接口,其中包括地点检索服务,web开发者通过此接口可以检索区域内的POI数据.百度地图处于数据保护对接口做了限制,每次访问服务,最多只能检 ...
- 实现百度地图导航Demo的语音播报功能
上文中实现了在本地导入百度地图导航Demo,那么在此基础上如何实现导航的语音播报呢? 一.为该应用申请语音播报(也叫注册) http://developer.baidu.com/map/index.p ...
- Android之旅十八 百度地图环境搭建
在android中使用百度地图,我们能够先看看百度地图对应的SDK信息:http://developer.baidu.com/map/index.php? title=androidsdk,它里面基本 ...
- 【百度地图API1.1】修改文本标注的样式
原文:[百度地图API1.1]修改文本标注的样式 百度地图API1.0中文本标注的样式写法为: label.getDom().style.borderColor = "#808080&quo ...
随机推荐
- MAC 地址(单播、组播、广播地址分类)
简介 一个制造商在生产制造网卡之前,必须先向 IEEE 注册,以获取到一个长度为 24bit 的厂商代码,也称为 OUI(Organizationally-Unique Identifier).制造商 ...
- OOP面向对象
一:什么是面向过程 我们是怎么思考和解决上面的问题呢? 答案是:我们自己的思维一直按照步骤来处理这个问题,这是我们的常规思维,这就是所谓的面向过程POP编程 二:面向过程POP为什么转换为OOP ...
- html5入门:教你用canvas写一个时钟
今天的时间比较充裕,心血来潮,为大家分享一个html5的小例子,希望对刚学html5或者是没学html5正准备学的“童鞋们”展示一个小案例,希望对你们的学习有帮助!高手嘛!请跳过吧! 好了,闲话少数, ...
- [转]MySQL 表锁和行锁机制
本文转自:http://www.cnblogs.com/itdragon/p/8194622.html MySQL 表锁和行锁机制 行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整 ...
- Bootstrap中的datetimepicker用法
本文实例为大家分享了bootstrap datetimepicker日期插件的简单使用,供大家参考,具体内容如下 首先在文件头部引入必要的文件: 1 2 <link rel="styl ...
- Java 数组声明的几种方式
Java数组定义声明的几种方法: 1. 类型名称[] 变量名=new 类型名称[length]; 2.类型名称[] 变量名={?,?,?}; 3.类型名称[] 变量名=new 类型名称[]{?,?,? ...
- JavaScript定时器实现的原理分析
原文链接:http://www.cnblogs.com/st-leslie/p/6082450.html 一.储备知识 在我们在项目中一般会遇见过这样的两种定时器,第一种是setTimeOut,第二种 ...
- JavaScript中8个常见的陷阱
译者按: 漫漫编程路,总有一些坑让你泪流满面. 原文: Who said javascript was easy ? 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原 ...
- call,apply,bind的用法与区别
1.call/apply/bind方法的来源 首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法? call,apply,bind这 ...
- div 中图片溢出问题及 CSS3中图片翻转问题
如果设置一个div 装两张以上的图片,如果不设置好div的宽度和高度,就会使图片溢出. 我们知道,div是可以由图片撑开其宽高的,也就是说如果只放一张图片的情况下,不设置div的宽高,div的宽高会默 ...