Geolocationd 基本原理
1.GPS
GPS基本原理是测量出已知位置的卫星到用户接收机之间的距离,然后综合多颗卫星的数据就可知道接收机的具体位置。适用于具备GPS功能的设备
(1)优点:在空旷地区比较准确,覆盖面比较广
(2)缺点:需要比较长时间定位,比较耗电池,在室内不太好,需要GPS设备支持
2.WIFI
地理定位服务提供者会在全世界范围内去收集WIFI热点位置信息,然后用户的设备只要能支持WIFI就能获取到周围WIFI热点的位位置和信号强弱信息,然后把这些信息发给提供者,就能得到自己的位置。
(1)优点:比较准确,适用于室内环境,相应速度快。
(2)缺点:在WiFi热点少的地方不适用
3.IP定位
通过你设备的物理地址所备案的地址信息来定位,但这种方式精确度不高,特别是用代理来上网的情况下。一般作为GPS和WIFI都不支持的情况下大致模糊匹配,比如各大团购网站监测用户所在城市。
4.手机基站
和WIFI原理类似,Apple的设备就是把WIFI和基站信息结合起来进行定位
代码实现:
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title></title>
6 </head>
7 <body>
8 <script>
9 //成功时获取位置信息
10 function success(position) {
11 alert(position.coords.latitude);
12 alert(position.coords.longitude);
13
14 //错误时获取有关的信息
15 function error(errorCode) {
16 alert(errorCode.code + '--' + errorCode.message);
17 // 错误代码及错误的具体信息
18 }
19
20 var options = {};
21 //options中的一些参数
22 //options是一个对象,可以设置超时时间,缓存时间等,如下:
23 //enableHighAccuracy表示是否允许使用高精度,但这个参数在很多设备上设置了没用,设备综合考虑电量,地理情况等,很多时候都是默认由设备自身来调整
24 //timeout指定超时时间
25 //maximumAge是指缓存的时间
26 if (navigator.geolocation) {
27 navigator.geolocation.getCurrentPosition(success, error, options)
28 } else {
29 alert('你浏览器out啦!')
30 }
31 }
32 // getCurrentPosition(success,error,options)是geolocation的一个方法,此外还有两个方法:
33 //1.watchPosition(success,error,options)表示重复获取地理位置,相当于将getCurrentPosition这个方法利用setinterval不断执行,其他用法和参数使用一样
34 //2.clearWatch()用来清除前一次获取的位置信息。
35 //这两个方法配合使用,能够实现一些很棒的功能,比如导航等!
36 </script>
37 </body>
38 </html>