位置信息来源

Ip定位(一般精确到城市级)

GPS定位(需要硬件设备支持)

Wi-Fi定位(适合大城市,农村等无接入点地区效果不好)

手机定位

自定义定位:通过编程计算出用户的位置外,也可以应许用户自定义其位置,应用程序可能应许用户输入他们的地址,邮政编码等详细信息,应用程序根据这些信息提供位置感知服务

通过全局属性navigator.geolocation可以访问地理定位功能,它返回一个Geolocation对象,

Geolocation对象

名称

说明

返回

getCurrentPosition(callback,errorCallback,options)

获取当前位置

Void

watchPosition(callback,error,options)

开始监控当前位置

数值(id)

clearWatch(id)

停止监控当前位置

void

 navigator.geolocation.getCurrentPosition(onSuccess,onError,options);

 //成功时

           function onSuccess(position){

               //返回用户位置

               //经度

               var longitude =position.coords.longitude;

               //纬度

               var latitude = position.coords.latitude;

               //使用百度地图API(或者使用腾讯地图也可以)

               //创建地图实例  

               var map =new BMap.Map("container");

               //创建一个坐标

               var point =new BMap.Point(longitude,latitude);

               //地图初始化,设置中心点坐标和地图级别  

               map.centerAndZoom(point,15);

           }

 

           //失败时

           function onError(error){

               switch(error.code){

                   case 1:

                   alert("位置服务被拒绝");

                   break;

                   case 2:

                   alert("暂时获取不到位置信息");

                   break;

                   case 3:

                   alert("获取信息超时");

                   break;

                   case 4:

                    alert("未知错误");

                   break;

               }

           }

 

在本例中调用了getCurrentPosition,有成功和失败时的回调函数,并且成功时返回一个position对象,失败时返回一个PositionError对象

position对象

名称

说明

返回

coords

返回当前位置的坐标

Coordinates

timestamp

返回获取坐标信息的时间

字符串

我们真正感兴趣的是Coordinates对象,它由Position.coords属性返回,

Coordinates对象

名称

说明

返回

latitude

返回纬度

数值(十进制)

longitude

返回经度

数值(十进制)

altitude

返回海拔高度

数值(米)

accuracy

返回坐标经度

数值(米)

altitudeAccuracy

返回海拔精度

数值(米)

heading

返回行进方向

数值(度)

Speed

返回行进速度

数值(米/秒)

 

PositionError对象

名称

说明

返回

code

返回代表错误类型的代码

有如下数值

1用户未授权使用地理定位功能

2不能确定位置

3请求位置的尝试已超时

message

返回描述错误的字符串

字符串

 

getCurrentPosition对象的第三个参数是一个PositionOptions对象,这个功能应许我们可以部分控制位置信息的获取方式

PositionOptions对象

名称

说明

返回

enableHighAccuracy

告诉浏览器我们希望得到可能的最佳结果

布尔值

timeout

限制请求位置的时间,设置多少毫秒后会报告一个超时错误

数值

maximumAge

告诉浏览器我们愿意接受缓存过的位置,只要它不早于指定的毫秒数

数值

 

监控位置

可以使用watchPosition方法不断获得关于位置的更新这个方法所需的参数和getCurrentPosition方法相同,工作方式也一样,它们的区别在于:随着位置发生改变,回调函数会反复的调用,当你想停止监控时,可以把此方法返回的id值传递给clearWatch方法