HTML5地理位置定位

在html5中有一个navigator.geolocation的特性来判断是否支持获取地理位置,地理位置的定位有GPS,IP地址,wifi,GSM/CDMA几种方法。

我们这里用百度地图的API来获取当前的经度和纬度,来搜索具体的位置。

navigator.geolocation有三个方法:1. getCurrentPosition();2. watchPosition();3. clearWatch()

1.getCurrentPosition()的使用方法:使用 getCurrentPosition() 方法来获得用户的位置。正确的使用方法为

navigator.geolocation.getCurrentPosition(onSuccess,onError,options);里面有三个参数,成功的回调,失败的回调,设置position更精细的参数。

onSuccess有关于位置的信息:该对象有属性timestamp和coords;

timestamp是响应的日期/时间

coords包含以下性质:

coords.latitude 十进制数的纬度 
coords.longitude 十进制数的经度 
coords.accuracy 位置精度 
coords.altitude 海拔,海平面以上以米计 
coords.altitudeAccuracy 位置的海拔精度 
coords.heading 方向,从正北开始以度计 
coords.speed 速度,以米/每秒计 

onError表示失败的信息,通过返回的code码,可以知道失败的原因,

        code 1:位置服务被拒绝(可能是浏览器拒绝分享地理位置,需要设置以下浏览器)
         code 2:  暂时获取不到位置信息      
         code 3:   获取信息超时       
         code 4:  未知错误               

options表示更详细的定位信息:

enableHighAccuracy:它将告诉浏览器是否启用高精度设备,所谓的高精度设备包含但不局限于前面所提到的 GPS 和 WIFI,值为 true 的时候,浏览器会尝试启用这些设备,默认指为 true。 

timeout:超时,获取位置信息时超出设定的这个时长,将会触发错误,捕获错误的函数将被调用,并且错误码指向TIMEOUT。 这样我们尝试修改调用 getCurrentPosition 时传递的参数 ;

2.watchPosition()的使用:

功能getCurrentPosition()相似,watchPosition()是定期轮询设备的位置,同样拥有3个参数,与getCurrentPosition()相同

3.clearWatch()

配合watchPosition()使用,用于停止watchPosition()轮询。

结合百度地图API,首先需要注册一个百度的密钥,然后引入百度的API模块,

ak=Hocni7ZDnrLvqES2m8VGf8TI3vp2q7yq密钥填写处

<script src="http://api.map.baidu.com/api?v=2.0&ak=Hocni7ZDnrLvqES2m8VGf8TI3vp2q7yq"></script>

百度地图上面有很多实例。可以参考一下:我所写的结果如下:


源代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="http://api.map.baidu.com/api?v=2.0&ak=Hocni7ZDnrLvqES2m8VGf8TI3vp2q7yq"></script>
<script type="text/javascript">
onload = function(){
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);
                                map.enableScrollWheelZoom(true);
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(function(data){
console.log(data);
var jd = data.coords.longitude;
var wd = data.coords.latitude;
var pt = new BMap.Point(jd,wd);
var mk = new BMap.Marker(pt);
map.addOverlay(mk);
map.panTo(pt);
var local = new BMap.LocalSearch(map, {
renderOptions: {map: map, panel: "r-result"}
});
local.search("腾讯科技");
},function(error){
console.log(error);
})
}
}
</script>
</head>
<body>
<div style="width: 600px; height: 600px;" id="allmap"></div>
</body>
</html>

欢迎交流,分享......





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值