标签:
h5地理位置API地理API允许javascript程序向浏览器询问用户的真实地理位置,支持地理位置API的浏览器在访问前总是会询问用户是否允许。
获取用户地理的途径有:
1、ip地址 书上说不准确,很多时候获取的是ISP机房的位置,,但是获取非常方便,没有什么限制。但是实际上我觉得在中国,ip地址还是比较准确的,基本上上能精确到小区或大楼的标准。
2、GPS 非常准确,但是需要在户外,且需要很长时间搜索卫星。最主要的很多设备比如笔记本电脑基本都是不带GPS的,新的智能手机倒是都有。
3、WiFi基站的mac地址。(猜测是连接位置已知的公共WiFi的时候,通过Mac地址识别WiFi接入点,从而定位)这种定位的精度还是很不错的,而且还可以在室内定位。不过由于这种位置公开的wifi比较少,此种方法的适用范围比较少。
4、 GSM或CDMA基站通过基站定位,精度随基站密度变化,精度一般,还是只有手机能用。看来地理位置API还是手机上比较有实用性。
5、用户指定位置 这个就不是HTML5的范畴了。
使用getCurrentPosition获取用户的位置
1
if(navigator.geolocation){
2
navigator.geolocation.getCurrentPosition(showPosition,showError);
3
}else{
4
alert(‘该浏览器不支持地理位置!‘);
5
}
6
7
function showPosition(position){
8
var lat=position.coords.latitude;
9
var lng=position.coords.longitude;11
}
12
function showError(error){
13
switch(error.code)
14
{
15
case error.PERMISSION_DENIED:
16
alert("用户拒绝对获取地理位置的请求。")
17
break;
18
case error.POSITION_UNAVAILABLE:
19
alert("位置信息是不可用的。")
20
break;
21
case error.TIMEOUT:
22
alert("请求用户地理位置超时。")
23
break;
24
case error.UNKNOWN_ERROR:
25
alert("未知错误。")
26
break;
27
}
}
支持地理位置的API的浏览器会定义navigator.geolocation。此属性拥有三个方法的对象:
navigator.geolocation.getCurrentPosition() 获取用户当前位置
navigator.geolocation.watchPosition() 获取并不断监视当前位置,一当有更改就会触发指定函数
navigator.geolocation.clearWatch() 停止监听用户位置
上面的代码可以知道,如果用户设备支持地理定位,则运行 getCurrentPosition() 方法。如果getCurrentPosition()运行成功,则向参数showPosition中规定的函数返回一个coordinates对象,getCurrentPosition() 方法的第二个参数showError用于处理错误,它规定当获取用户位置失败时运行的函数。其实,除了前两个参数之外getCurrentPosition()还接受第三个参数,该参数为一个配置对象。该对象的属性指定是否需要高精度的位置信息,该位置的过期时间,以及系统在多长范围内获取位置信息。
1 opts={ 2 2 enableHightAccuracy:false,//获取高精度位置 3 3 maximumAge:30000, //过期时间 4 4 timeout:15000 //15s的等待时间 5 5 } 6 6 if(navigator.geolocation){ navigator.geolocation.getCurrentPosition(showPosition,showError,opts); 7 7 }else{ 8 8 alert(‘该浏览器不支持地理位置!‘); 9 9 } 10 10 11 11 function showPosition(position){ 12 12 } 13 13 function showError(error){ 14 14 15 15 }
接着就是在地图上显示坐标位置(百度地图):
在使用百度地图前,你必须先获取一下秘钥,点击这里