`
toplchx
  • 浏览: 340941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HTML5学习笔记(四)-Geolocation API

阅读更多

一、位置信息

1、数据

位置信息由经度、纬度坐标和一些其他元数据组成。

纬度:距离赤道以北或以南的数值。比如:39.17222

经度:距离英国格林威治以东或以西的数值。比如:-120.13778

经纬度可以以十进制表示,也可以以DMS(角度)格式表示。

HTML5 Geolocation API的坐标格式是十进制格式。

除经纬度外,HTML5 Geolocation还提供坐标的准确度。依据浏览器所在的硬件设备,还可能提供一些元数据,包括海拔、海拔准确度、行驶方向和速度等。如果这些元数据不存在则返回null。

 

2、位置信息从何而来

API并不能保证设备返回的是惠及位置是精确的。

设备可以使用下列数据源

  • IP地址
  • 三维坐标
    • GPS(Global Positioning System,全球定位系统);
    • 从RFID、Wi-Fi和蓝牙到Wi-Fi的MAC地址;
    • GSM或CDMA手机的ID
  • 用户自定义数据

IP地址定位数据的优缺点

优点 缺点
任何地方都可用 不精确(经常出错,一般精确到城市级)
在服务器端处理 运算代价大

 

GPS定位数据的优缺点

优点 缺点
很精确 定位时间长,用户耗电量大
  室内效果不好
  需要额外硬件设备

 

Wi-Fi定位数据优缺点

优点 缺点
精确 在乡村这些无线接入点较少的地区效果不好
可在室内使用  
可以简单、快捷定位  

 

手机地理数据优缺点

优点 缺点
相当准确 需要能够访问手机或其moden的设备
可在室内使用 在基站较少的片源地区效果不好
可以简单、快捷定位  

 

用户自定义的地理定位数据 

优点 缺点
用户可以获得比程序定位服务更准确的位置数据 可能很不准确,特别是当用户位置变更后
允许地理定位服务的结果作为备用位置信息  
用户自行输入可能比自动检测更快  

 

用户所在位置属于敏感信息,HTML5 Geolocation规范提供了一套保护用户隐私的机制。除非得到 用户明确许可,否则不可获取位置信息。

 

二、使用Geolocation API

1、浏览器支持检查

目前主流浏览器都支持Geolocation API。要查看某个版本是否支持可参考http://caniuse.com

用脚本检查支持性:

function loadDemo() {
    if (navigator.geolocation) {
        document.getElementById("support").innerHTML = "Geolocation supported.";
    } else {
        docment.getElementById("support").innerHTML = "Geolocation is not supported in your browser.";
    }
}

 2、位置请求

有两种类型的位置要求

  • 单次定期诶请求
  • 重复性的位置更新请求
单次请求函数:
void getCurrentPosition(in PositionCallback successCallback, 
                             in optional PositionErrorCallback errorCallback,
                             in optional PositionOptions options);
 分析一下这个核心函数。
这个函数通过navigator.geolocation对象调用。这个函数有一个必选参数和两个可选参数。
  • 必选参数successCallback为浏览器指明位置数据可用时应调用的函数。因为查位置可能需要很长时间,所以采用回调函数的方式。该函数只有一个参数:位置对象(假设命名为position)。对象包含坐标信息(coords)和一个获取数据时的时间戳(timestamp)。
position.coords position.timestamp
坐标信息(coords)包含三个特性:
latitude(纬度)、longitude(经度)、accuracy(准确度)
accuracy准确度以m为单位指定经纬度与实际位置间的差距,置信度为95%。
根据硬件设备的不同,坐标信息还可能提供如下特性:
altitude:用户位置的海拔高度,以m为单位;
altitudeAccuracy:海拔高度的准确度,以m为单位。
heading:行进方向,相对于正北而言;
speed:地面速度,以m/s为单位。
 
  • 可选参数errorCallback是发生错误时的回调函数。虽然是可选参数,但建议选用。
该函数有一个参数:错误对象(error)。错误对象有两个属性,code和message。
code对应3个值
编号值 常量 说明
1 PERMISSION_DENIED 用户选择拒绝浏览器获取其位置信息
2 POSITION_UNAVAILABLE 尝试获取用户位置数据,但失败了
3 TIMEOUT 获取用户位置时超时(如果设置了可选的timeout值)

  • 可选参数options对象可以调整HTML5 Geolocation服务的数据收集方式。
现在有三个可选参数,使用JSON对象传递({参数1:值1,参数2:值2,参数3:值3})。他们是:
enableHightAccuracy:如果启用这个参数,则通知浏览器启用HTML5 Geolocation服务的高精确度模式。参数默认值为false。如果启用此参数,可能没有任何差别,也可能会导致机器花费更多的时间和资源来确定位置,所以应谨慎使用。
timeout:单位为ms,告诉浏览器计算当前位置所允许的最长时间。其默认值为Infinity,即无穷大或无限制。
maximumAge:表示浏览器重新计算位置的时间间隔。单位是ms。默认值为零,这意味着浏览器每次请求时必须立即重新计算位置。
 
重复更新函数:
var watchId = navigator.geolocation.watchPosition(successCallback, errorCallback, options);
 只要用户位置发生变化,Geolocation服务就会调用successCallback处理程序。它的效果就像程序在监视用户的位置,并会在其变化时及时通知用户一样。
关闭更新需要调用
navigator.geolocation.clearWatch(watchId);
 
3、使用HTML5 Geolocation构建应用
一个重要的计算距离的公式,Haversine公式:
 
Number.prototype.toRadians = function() {
    return this * Matn.PI / 180;
}

function distance(latitude1, longitude1, latitude2, longitude2) {
    var R = 6371;
    var deltaLatitude = (latitude2 - latitude1).toRadians();
    var deltaLongitude = (longitude2 - longitude1).toRadians();
    latitude1 = latitude1.toRadians();
    latitude2 = latitude2.toRadians();

    var a = Math.sin(deltaLatitude/2) * Math.sin(deltaLatitude/2) +
                Math.cos(latitude1) * Math.cos(latitude2) *
                Math.sin(deltaLongitude/2) * Math.sin(deltaLongitude/2);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    var d = R * c;
    return d;
}
 
  • 大小: 19.9 KB
分享到:
评论

相关推荐

    google map api 学习笔记

    **谷歌地图API学习笔记** 谷歌地图API(Google Maps API)是一种强大的工具,允许开发者将谷歌地图集成到自己的网站或应用程序中,实现自定义地图、地理定位、路线规划等多种功能。这篇学习笔记主要涵盖以下几个...

    HTML5学习笔记

    这篇学习笔记将深入探讨HTML5的核心特性、新元素、API接口以及如何利用它们来构建现代网页。 一、HTML5的新特性与改进 1. 结构化元素:HTML5引入了如、、、、和等新元素,这些元素有助于更好地组织页面结构,提高...

    HTML5学习笔记(总结提炼版)——001

    本学习笔记将聚焦于HTML5的基础知识,包括其新特性、元素和最佳实践。 一、HTML5的新特性 1. 语义化标签:HTML5引入了新的语义化标签,如、、、和等,这些标签有助于更好地组织内容,提高可读性和可访问性。 2. ...

    Essential Guide to HTML5学习笔记

    本篇笔记将深入探讨HTML5的基础知识,帮助初学者快速入门。 一、HTML5概述 HTML5(超文本标记语言第五版)旨在提高互操作性和用户体验,它对浏览器的兼容性进行了优化,减少了对插件的需求,并引入了离线存储、拖放...

    html5在移动领域开发学习笔记(ppt版)

    HTML5是下一代网页标准,它的...通过学习这个HTML5在移动领域开发的学习笔记,你可以深入了解这些技术,结合实际案例进行练习,从而成为一名熟练的HTML5移动应用开发者。记住,不断实践和探索是掌握新技术的最佳途径。

    Html5app开发学习笔记.pdf

    本篇学习笔记主要探讨了HTML5作为移动开发平台的潜力,以及开发者在构建HTML5 App时需要关注的关键技术和挑战。 首先,HTML5被视作一个强大的跨平台移动应用开发工具,它提供了一种在不同设备上构建应用程序的统一...

    html5框架PhoneGap API详解笔记(ppt及word版)

    4. **地理定位API(Geolocation API)**:获取设备的经纬度、速度、方向等位置信息。 5. **相机API(Camera API)**:拍照或从图库选择图片,并进行裁剪。 6. **文件系统API(File System API)**:读写文件和目录,...

    html学习笔记

    这个“html学习笔记”涵盖了HTML5的基础概念、新特性和实际应用,旨在帮助初级学习者快速入门并掌握这一核心技术。 在HTML5中,许多旧的元素被废弃,同时引入了许多新的元素,这些元素的设计更具有语义化,使得网页...

    HTML5入门课堂随堂笔记.zip

    HTML5是现代网页开发的核心标准,它在2014年正式发布,为Web开发者提供了更强大、更灵活的功能和接口。这篇随堂笔记将帮助初学者深入理解HTML5的...通过阅读“HTML5课堂入门笔记”,你可以逐步学习这些概念并实践应用。

    H5笔记.zip

    8. **HTML5高级API学习笔记.pdf**:HTML5引入了许多新的API,如Geolocation(定位)、Canvas(画布)、Web Storage(本地存储)、Web Workers(后台线程)等,笔记会详细介绍这些功能的应用场景和用法。 9. **H5...

    传智HTML5笔记1

    《传智HTML5笔记1》是一份针对Web前端开发者的实战教程,主要涵盖了HTML5的基础知识,包括前言、语义化、表单以及多媒体等内容。以下是对这些知识点的详细阐述: 1. **前言** - **认识HTML5**:HTML5是超文本标记...

    HTML5+CSS3 markdown笔记

    3. **拖放功能**:HTML5提供了拖放API,允许用户在网页上直接拖放元素,无需JavaScript插件。 4. **多媒体支持**:内建的`<audio>`和`<video>`标签,使得音频和视频播放无需Flash等第三方插件。 5. **Canvas画布**...

    Web-gps_定位_vs2010gpsweb定位_

    通过深入理解这些文件,开发者可以学习如何在Web应用中集成GPS定位功能,了解如何使用VS2010进行开发,以及如何优化HTML5 Geolocation API的使用以提高定位精度。同时,这也涉及到跨平台兼容性、用户体验设计和隐私...

    html5学习资料

    本资料包包含的是《HTML5和RIA网站设计》一书的相关资源,包括源代码和作者个人整理的学习笔记,对于深入理解HTML5具有极大的帮助。 HTML5的核心特性包括: 1. **语义化标签**:HTML5引入了新的标签,如、、、、和...

    前端学习笔记1

    这篇学习笔记将主要关注JS及其相关的技术。以下是对每个文件名称所对应知识点的详细说明: 1. **ECMAScript (3.1.ECMAScript.docx)** ECMAScript是JavaScript的标准化规范,由ECMA国际维护。自1997年以来,已经...

    HTML5手机微信网站砸金蛋抽奖活动代码.zip

    5. **Geolocation API**:获取用户地理位置的功能,不过在这个抽奖活动中可能未被使用。 6. **Web Workers**:用于在后台执行复杂计算,不阻塞用户界面,提高用户体验。 接下来,我们关注一下这个压缩包中的文件: ...

    学习用品Html5网站模板是一款笔记本风格的学生学习用品网站模板 .rar

    6. **Geolocation API**:允许网页获取用户的位置信息,为本地化服务提供便利。 【网站模板设计】 网站模板设计通常包含以下几个关键部分: 1. **响应式布局**:考虑到不同设备的屏幕尺寸,模板应具有响应式设计...

    h5第一个课堂笔记.rar

    学习者可以通过对比这两个阶段,理解网站从设计到实现的过程,学习如何用HTML5的特性如离线存储、拖放功能、Geolocation API等增强用户体验。 通过这些资料,学习者不仅可以掌握HTML5的基础知识,还能通过实践提升...

    白色简洁线条宽屏自适应html5模板_白色 线条 宽屏 自适应 html5 图片.zip

    HTML5还引入了诸多新的API,如Canvas用于绘制图形,SVG用于矢量图,Web Audio API和Web Video API支持音频和视频的嵌入与播放,WebSocket实现双向通信,Geolocation API获取地理位置信息,以及Web Storage和Indexed...

Global site tag (gtag.js) - Google Analytics