三个方法:
一. getCurrentPosition()获取用户(设备)当前位置
二. watchPosition()一直监视位置:主要是监视移动端用户的位置
三. clearWatch()清除监听位置
1. getCurrentPosition()获取用户(设备)当前位置
navigator.gelolcation.getCurrentPosition(success-callback,error-callback,{
geolocation选项
})
分析:
success-callback:用户允许共享geolocation的回调函数,用户不允许时候 不能走里面的函数;
1.功能:用户允许使用定位服务,并且成功获取到用户未知的回调函数
接收一个参数,用来获取到地理位置的信息
2.参数:coords:包含当前地理位置的信息参数
参数coords的子属性:
latitude:当期那位置的维度
longitude:当前位置的经度
altitude:当前位置的海拔
speed:速度,以 米/秒 为单位
error-callback:获取地理位置失败时的回调函数
1.功能:处理错误,规定当获取用户位置失败时执行的函数
2.参数:error,包含错误信息以及错误代号等信息
参数error的子属性:
message:错误信息
code:错误代码,适用于精确匹配错误时候使用
PERMISSION-EDDIED:用户不允许地理位置
POSITION-UNAVILABLE:无法获取当前位置
TIMEOUT:操作超时
geolocation选项:包括一些属性,是否启用一些高精度的匹配,是否定义超时时间的配置信息等
1.功能:定义了获取地理位置的辅助功能的属性
2.相关属性:enableHightAccuracy:指示浏览器获取高精度的位置,默认为false;(最好启动高精度的位置,改成true)
timeout:指定获取地理位置的超时时间,默认不限时,单位为毫秒(如果设置之后时间之后,没有获取用户的地理位置,将走error-callback 函数)
maximumAge:最长有效期,在重复获取地理位置时,此参数指定多久再获取位置(每隔多长时间调取一次用户的地理位位置信息)
2. watchPosition()像一个位置追踪器,与clearwatch成对出现,类似于setinteval和clearinteval的工作方式
1。调用: var watch = navigator.watchPosition(success-callback , error-callback,选项)
3 .clearWatch: 清除位置追踪器(清除之后,就不会再跟踪用户的位置)
clearWatch(watch)
代码实现
<script type="text/javascript">
window.onload = function{
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function(position){
//获取地理位置信息
console.log("纬度:"+position.coords.latitude);
console.log("经度:"+position.coords.longitude);
},function(error){
console.log(error.message)
},{
enableHighAccuracy:true,
timeout:3000 //如果在三秒钟之内还没有得到用户信息,报出错误超时的错误
})
}else{
alert("不支持定位")
}
}
</script>
用百度的方法:获取设备地理位置
百度的geolocation对象
var geolocation = new BMap.Geolocation();
通过getCurrentPosition事件,添加回调函数,并且传递position参数获取当前位置
geolocation.getCurrentPosition(function(position){});
通过geolocation 的getstatus()判读地理位置获取状态
BMAP-STATUS-SUCCESS:检索成功(当getstatus = BMAP-STATUS-SUCCESS说明可以显示当前位置)
BMAP-STATUS-TIMEOUT:超时
position参数
1.功能:获取当前设备的地理位置
2.属性:position.point:表示当前位置坐标对象
position.point.lng;当前位置的经度
position.point.lat:当前位置的纬度
3.操作:
创建标点:
函数:var marker = new BMap.marker(point);
将覆盖物添加到地图上
map.addOverlay(marker)
将地图的中心移动到指定的点上
map.panTo(point)
例子(可能有些小问题,但是可以借鉴):
<div id="map" style="width: 500px;height: 500px;"></div>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>
<script type="text/javascript">
window.onload = function(){
new geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(position){
if(geolocation.getstatus() == BMAP_STATUS_SUCCESS){
var point = position.point;
console.log(point)
var map = new BMap.Map("map")
map.centerAndZoom(point,12)
map.enablescroolWheelZoom(true)
//添加标点
var marker = new BMap.marker(point)
map.addOverlay(marker)
map.panTo(point)
}
})
}
</script>
复制代码
转载于:https://juejin.im/post/5c9363f26fb9a070cb24aed4