标签:定位 map res 地理位置 let new BMap
地理定位
一、定位基础与原理
IP
定位运营商基站定位
GPS
卫星定位
二、地理定位的实现
HTML5
提供了地理定位API
,允许用户将自己的位置暴露给web
应用程序(前提允许web
应用拥有该权限)。获取位置相关代码:
let geoloc = window.navigator.geolocation;
let success = function(data){} // 定位成功后回调
let error = function(msg){} // 定位失败后回调
let options = {} // 定位选项
geoloc.getCurrentPosition(success, [error, options]);
google chrome
从50版本开始,地理定位API
只允许提供给https
的网站。所以普通网站拿不到定位信息。但是google
提供了模拟器用于定位测试。
如果定位成功,getCurrentLocation
将会返回定位信息,格式如下:
coords: GeolocationCoordinates
accuracy: 150 精准度
altitude: null 海拔高度
altitudeAccuracy: null 海拔高度的精准度
heading: null
latitude: 39.917406 纬度
longitude: 116.397074 经度
speed: null 当前客户端的瞬时速度
timestamp: 1625820505615 时间戳 毫秒值
案例:点击按钮,获取当前的位置信息
<body>
<button id="btn">点我获取定位</button>
<script>
btn.onclick = function() {
let geoloc = window.navigator.geolocation;
// 参数:成功回调,失败回调,定位选项配置
geoloc.getCurrentPosition((successmsg) => {
console.log(successmsg);
}, (errormsg) => {
console.warn(errormsg);
}, {
timeout: 5000 // timeout: 5秒超时
})
}
</script>
</body>
1. 接入第三方位置服务平台 - 百度地图、高德地图、腾讯地图
一旦接入了这些第三方平台,就可以方便的在自已网页中嵌入地图控件。引入这些第三方位置服务的js
库后,还可以操作这些地图,访问他们提供的位置服务:查询公交线路、查询步行线路、驾车线路、地址查询、查询周边场所等等。
百度地图接入流程
进入百度地图开放平台: https://lbsyun.baidu.com/
选择开发文档 ---- JavascriptAPI
---- JavaScript API v3.0
2. 调用百度地图JS API
修改地图显示效果
利用navigator.geolocation
得到当前位置,创建一个point
对象作为中心点参数
geoloc.getCurrentPosition(
(res)=>{
let lat = res.coords.latitude; // 纬度
let long = res.coords.longitude; // 经度
console.log(`lat: ${lat} long: ${long}`)
// 创建点坐标
let point = new BMap.Point(long, lat);
// 设置中心点与缩放级别
map.centerAndZoom(point, 15);
},
(err)=>{ console.log(err); });
地图对象(Map
)除了centerAndZoom
之外还有什么属性及方法?
面向对象API
提供了什么功能就可以使用什么功能。
常用功能:
显示地图
设置地图的属性样式
为地图添加控件
为地图添加覆盖物
第三方位置服务
- 逆地址解析(通过经纬度返回地址详情字符串)
- 周边检索(通过经纬度,查询周边设施场所)
- 等等
demo:
<head>
<!-- 1. 引入baidu jsAPI -->
<script src="https://api.map.baidu.com/api?v=3.0&ak=ImUxp08DxBOdWifsi9WvqY3GkqV4eRHB"></script>
<style>
#container {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
</style>
</head>
<body>
<!-- 2. 提供容器 -->
<div id="container"></div>
<!-- 3. 编写js初始化地图 -->
<script type="text/javascript">
// 创建地图实例
var map = new BMap.Map("container");
// 获取当前位置的经纬度 然后设置地图
let geoloc = window.navigator.geolocation;
geoloc.getCurrentPosition(
(res)=>{
let lat = res.coords.latitude; // 纬度
let long = res.coords.longitude; // 经度
console.log(`lat: ${lat} long: ${long}`)
// 创建点坐标
var point = new BMap.Point(long, lat);
// 设置中心点与缩放级别
map.centerAndZoom(point, 15);
// 调用map的方法,设置地图的能力
map.enableDragging();
// 启用滚轮缩放
map.enableScrollWheelZoom();
// 添加平移缩放控件
let navCtrl = new BMap.NavigationControl();
map.addControl(navCtrl);
// 添加比例尺控件
let scaleCtrl = new BMap.ScaleControl();
map.addControl(scaleCtrl);
// 添加定位控件
let glCtrl = new BMap.GeolocationControl();
map.addControl(glCtrl);
// 添加覆盖物 Marker对象
// let point = new BMap.Point(long, lat);
let marker = new BMap.Marker(point);
map.addOverlay(marker);
// 添加事件
marker.addEventListener('click', (e)=>{
alert('marker被点击');
});
// LBS服务 逆地址解析
let geoc = new BMap.Geocoder();
geoc.getLocation(point, (res)=>{
console.log(res);
console.log(res.addressComponents.city);
});
// LBS服务 查询周边
let localSearch = new BMap.LocalSearch(
point, // 当前位置点
{ // options对象,指定搜索结束后的回调
onSearchComplete: (res)=>{
console.log(res);
}
}
);
localSearch.search('影院');
},
(err)=>{ console.log(err); });
</script>
</body>
标签:定位,map,res,地理位置,let,new,BMap
来源: https://www.cnblogs.com/CarlaZhou/p/15027303.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。