百度地图在web中的使用(js)

背景:在公司做一个地理位置的自定义字段,需要用到地图来获取经纬度和地址,在这选择了百度地图

准备工作

使用过程

  1. 引入js文件
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=生成的key"></script>
  1. 创建一个div容器用来显示地图:
<div id="map"></div>
  1. 实例化地图:
//百度地图API功能
var map = new BMap.Map("map"); //创建Map实例
  1. 使用百度地图:
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); //开启鼠标滚轮缩放
  1. 百度地图获取当前位置:(基于浏览器获取)
	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})
  1. 百度地图里的智能搜索:
    //内部自定义函数,根据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, '该地址百度地图解析失败')
}
}
}
  1. 百度地图根据经纬度获取当前地址:
    /**
* 根据经纬度获取地址
* @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) //自定义方法,把查询到的地址和经纬度显示在页面上
});
}
  1. 百度地图根据经纬度和地址信息在地图中创建标注同时文字信息:
    /**
* 在地图上根据查询的地址创建标注
* @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中的使用(一)的更多相关文章

  1. 【详细教程】论android studio中如何申请百度地图新版Key中SHA1值

    一.写在前面 现在越来越多的API接口要求都要求提供我们的项目SHA1值,开发版目前还要求不高,但是发布版是必定要求的.而目前定位在各大APP中也较为常见,当下主流的百度地图和高德地图都在申请的时候会 ...

  2. 百度地图和高德地图结合在web中的使用(二)

    百度地图在web中的使用(二) 背景:在做一个关于地理位置字段时,初始位置使用百度地图获取时失败,获取的位置信息不准确,奈何产品说友商好使的啊,F12看后是采用的高德,所以在这采用高德地图获取初始位置 ...

  3. 在Fragment中实现百度地图,定位到当前位置(基于SDKv2.1.0)

    使用最新版本的百度地图需要注意的几个地方: 1.libs文件夹下要有android-support-v4.jar.baidumapapi_v2_1_0.jar.locSDK_3.1.jar三个jar包 ...

  4. 【重点突破】—— 百度地图在React单页面应用中的使用

    前言:百度地图是网页中使用地图的常用第三方工具,这里结合React项目中学到的应用场景总结一些使用要点. 一.在网页中嵌入百度地图 搜百度地图开放平台,注册百度开发者账号 控制台:查看应用.创建应用( ...

  5. JavaScript调用百度地图

    在网站开发过程中,经常会调用到地图,百度地图提供Web开发.Android开发.iOS开发API及SDK,百度地图JavaScript API可帮助您在网站中构建功能丰富.交互性强的地图应用,本篇博客 ...

  6. 基于 Golang 完整获取百度地图POI数据的方案

    百度地图为web开发者提供了基于HTTP/HTTPS协议的丰富接口,其中包括地点检索服务,web开发者通过此接口可以检索区域内的POI数据.百度地图处于数据保护对接口做了限制,每次访问服务,最多只能检 ...

  7. 实现百度地图导航Demo的语音播报功能

    上文中实现了在本地导入百度地图导航Demo,那么在此基础上如何实现导航的语音播报呢? 一.为该应用申请语音播报(也叫注册) http://developer.baidu.com/map/index.p ...

  8. Android之旅十八 百度地图环境搭建

    在android中使用百度地图,我们能够先看看百度地图对应的SDK信息:http://developer.baidu.com/map/index.php? title=androidsdk,它里面基本 ...

  9. 【百度地图API1.1】修改文本标注的样式

    原文:[百度地图API1.1]修改文本标注的样式 百度地图API1.0中文本标注的样式写法为: label.getDom().style.borderColor = "#808080&quo ...

随机推荐

  1. 网络基础知识 - HTTP协议

    前传:HTTP协议的演变过程 HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是 ...

  2. 视频人脸检测——Dlib版(六)

    往期目录 视频人脸检测--Dlib版(六) OpenCV添加中文(五) 图片人脸检测--Dlib版(四) 视频人脸检测--OpenCV版(三) 图片人脸检测--OpenCV版(二) OpenCV环境搭 ...

  3. MyBatis源码解析(七)——DataSource数据源模块之托管数据源

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6675700.html 1 回顾 之前介绍的非池型与池型数据源都是MyBatis自己定义的内 ...

  4. #2 Python面向对象(一)

    前言 对于萌新来说,面向对象,这是一个很陌生的词语.如果你接触过Linux,你一定知道“一切皆文件”,也就是说,在Linux中所有都是文件,鼠标是文件.键盘是文件.目录是文件等等一切都是文件:Pyth ...

  5. μC/OS-II 创建一个任务的流程

    1. 声明任务的优先级.任务堆栈的大小及任务函数 #define LED_TASK_PRIO 6 #define LED_STK_SIZE 64 void led_task(void *pdata); ...

  6. LeetCode-63. 不同路径 II

    最近英文版的访问特别慢,转战中文吧 和上一题一样,递归会超时 //63 不同路径2,递归解法 int uniquePaths2(vector<vector<int>>& ...

  7. C#委托。

    什么是委托. 委托是一种数据类型. 委托的作用. 把变化的东西封装起来. 委托是引用变量,声明后不赋值为null   所以使用前校验非空. class Program { static void Ma ...

  8. [PHP]算法-队列结构的PHP实现

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 1.php数组完全就能实现 2.array_push 从尾部往里压入元素 3.array_shi ...

  9. 【Java每日一题】20170228

    20170227问题解析请点击今日问题下方的“[Java每日一题]20170228”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; import jav ...

  10. 接触Java23天

    根据老师的要求写了一段然后在评讲的时候在修该一些: 猫的: public class Cat extends Animal{ public void methodCat(){ System.out.p ...