位置信息来源
HTML5 Geolocation API 不指定设备使用哪种底层技术来定位应用程序的用户。相反,它只是用于检索信息的 API ,而且通过该 API 检索到的数据只具有某种程度的准确性。它并不能保证设备返回的实际位置是精确的。
- IP 地址
- 三维坐标
- GPS 全球定位系统
- 从 RFID 、 Wi-Fi 和蓝牙到 Wi-Fi 的 MAC 地址
- GSM 或 CDMA 手机的 ID
- 用户自定义数据
IP 定位
在 HTML5 Geolocation API 之前,基于 IP 地址的地理定位方法是获得位置信息的唯一方式,但其返回的位置信息通常并不靠谱,基于 IP 地址的地理定位的实现方式是,自动查找用户的 IP 地址,然后检索其注册的物理地址。因此,如果用户的 IP 地址是 ISP 提供的,其位置往往就由服务供应商的物理地址决定,该地址可能距离用户数千米。
优点:
- 任何地方都可用
- 在服务器端处理
缺点:
- 不精确,一般精确到城市级
- 运算代价大,并经常出错
GPS 定位
GPS 定位是通过收集运行在地球周围的多个 GPS 卫星的信号实现的,但 GPS 定位时间可能较长,因此它不适合需要快速响应的应用程序。因为获取 GPS 定位数据需要时间可能较长,所以开发人员可能需要异步查询用户位置。
优点:比较精确。
缺点:
- 定位时间长,耗电量大
- 室内效果不好
- 需要硬件设备支持
Wi-Fi 定位
基于 Wi-Fi 的地理定位信息是通过三角距离计算得出的,这个三角距离指的是用户当前位置到已知的多个 Wi-Fi 接入点的距离。不同于 GPS , Wi-Fi 定位在室内也非常准确。
优点:
- 精确
- 可在室内便用
- 可以简单、快捷地定位
缺点:
- 适合在大城市,在乡村等无接入点或者接入点较少的地区效果不好
手机定位
基于手机的地理定位信息是通过用户到一些基站的三角距离确定的。这种方法可提供相当准确的位置结果。这种方法通常同基于 Wi-Fi 和基于 GPS 的地理定位信息结合使用。
优点:
- 相当准确
- 可在室内使用
- 可以简单、快捷地定位
缺点:在基站较少的偏远地区效果不好。
自定义定位
除了通过编程计算出用户的位置外,也可以允许用户自定义其位置。应用程序可能允许用户输入它们的地址、邮政编码和其它一些详细信息。应用程序可以利用这些信息来提供位置感知服务。
优点:
- 可以获得比程序定位服务更准确的位置数据
- 允许地理定位服务的结果作为备用位置信息
- 用户自行输入可能比自动检测更快
缺点:可能不准确,特别是当用户位置变更后。