百度地图在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. Mysql加锁过程详解(2)-关于mysql 幻读理解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  2. 手动生成/etc/shadow文件中的密码

    shadow文件的格式就不说了.就说说它的第二列——密码列. 通常,passwd直接为用户指定密码就ok了.但在某些情况下,要为待创建的用户事先指定密码,还要求是加密后的密码,例如kickstart文 ...

  3. shell编程基础(七): 处理文件命令sed与awk

    一.sed(以行为单位处理文件) sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑 ...

  4. [转]Virtualbox主机和虚拟机之间文件夹共享及双向拷贝(Windows<->Windows, Windows<->Linux)

    本文转自:https://www.jb51.net/article/97271.htm 最近学习Virtualbox的一些知识,记录下,Virtualbox下如何实现主机和虚拟机之间文件夹共享及双向拷 ...

  5. [心得]如何快速利用SqlMap做安全檢測

    SqlMap的介紹我就不詳提啦!SqlMap是用來尋找與做Sql-injection的一款工具 在使用前你需要安裝python唷!安裝的過程我們就不介紹了. 直接來看如何快速使用SqlMap吧! 這裡 ...

  6. C# string数组转int数组

    用法 //字符串数组(源数组) string[] sNums = new[] {"1", "2"}; //整型数组(目标数组) int[] iNums; //转 ...

  7. 在Prism 框架中,实现主程序与模块间 UI 的通信

    背景: 在模块的UI中包含 TreeView 控件,在该树形控件的每一节点前面定义了一个复选框,如图 需求: 在两个不同的应用程序中使用该控件,而它在不同应用程序中的外观则并不一致,按照本例,即一个显 ...

  8. 4.4 explain 之 possible_keys 、key、key_len

    一.possible_keys 显示可能应用在这张表中的索引,一个或多个. 查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询实际使用. 二.key 实际使用的索引.如果为null,则没有 ...

  9. Bean实例化的三种方式

    1. 构造器实例化 spring容器通过bean对应的默认的构造函数来实例化bean. 2. 静态工厂方式实例化 首先创建一个静态工厂类,在类中定义一个静态方法创建实例. 静态工厂类及静态方法: pu ...

  10. mysql基础整理01

    在终端或命令行中和数据库软件建立连接 mysql -uroot -p 数据库相关SQL 查看所有数据库 show databases; 创建数据库 create database 数据库名; crea ...