• 2.01 MB
  • 2022-05-17 13:36:42 发布

基于HTMLGeolocation考勤管理系统.doc

  • 75页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
摘要随着互联网技术的不断发展和计算机性能的不断提升,用户享受互联网的方式也开始不断的变化,越来越多的应用可以直接以浏览器打开的方式使用,数据则是存储在云端,更加的安全可靠,方便用户共享数据。在各种应用不断的趋于更加网络话的同时,一种新的技术标准也随之产生,那就是HTML5(HTML是一种标记语言也是一种标准,互联网开发居于此)。HTML5是近十年来Web(互联网)标准最巨大的飞跃,和以前的版本不同,HTML5并非仅仅用来表示Web内容,它的使命是将Web带入一个成熟的应用平台,在这个平台上,视频、音频、图象和动画,以及同电脑的交互都被标准化。也就是说HTML5是通过开放的技术和标准来实现一个无插件模式的富客户端,这个客户端可以在移动终端、PC(个人计算机)或者其他可以有网络的地方轻松的运行。所以此时研究HTML5,并且大胆的实践有着重要的意义。本文完成了一个基于HTML5GeolocationAPI的考勤管理系统软件的设计与实现。本文的研究工作主要是运用软件工程原理,对这个系统进行需求分析、设计、代码实现和测试。本文的前两部分介绍了课题背景和相关技术。在第三部分需求分析中,以用例模型为工具,分析了本系统的功能需求和非功能需求。第四部分介绍了本系统的设计与实现,是本文的重点,所有内容都是围绕这个主题来展开论述的。在这一部分中,详细介绍了基于基于HTML5GeolocationAPI的考勤管理系统软件的设计、实现和各个过程中存在的问题与解决方法。本文的第五部分,完成了对该应用的测试,并列出了在测试过程中发现的一些不足。最后介绍了HTML5Geolocation应用的前景展望。通过对基于Html5Geolocation考勤管理系统开发过程的介绍,可以了解到一个HTML5应用的开发过程。近年来,由于HTML5Geolocation定位迅速崛起,针对HTML5应用的开发将有着广阔的前景。【关键词】HTML5Geolocation考勤I ABSTRACTWiththecontinuousdevelopmentofInternettechnologyandcomputerperformancecontinuestoincrease,usershavebeguntoenjoythewaytheInternetisconstantlychanging,moreandmoreapplicationscanbeopeneddirectlyinthebrowser"suseofthedataisstoredinthecloud,moresafe,reliable,user-sharedata.InavarietyofapplicationscontinuetobecomemorenetworksofthesessionandanewtechnicalstandardsattendantthatHTML5(HTMLisamarkuplanguageisastandard,Internetdevelopmentlivinghere).HTML5isthedecadeWeb(Internet)Standardgreatestleap,andpreviousversions,HTML5isnotjustusedtorepresentWebcontent,itsmissionistobringamatureWebapplicationplatform,onthisplatform,video,audio,imagesandanimations,aswellasinteractionwiththecomputerhavebeenstandardized.ThatHTML5isthroughopentechnologiesandstandardstoachieveafreeplug-inmodelrichclient,theclientcanbeinthemobileterminal,PC(personalcomputer)oranyotherplacewherethenetworkcanbeeasilyrun.SointhiscasestudyHTML5,andboldpracticeofgreatsignificance.ThiscompletedaHTML5GeolocationAPI-basedtimeandattendancemanagementsystemsoftwaredesignandimplementation.Theresearchworkismainlyusingsoftwareengineeringprinciple,thissystemneedsanalysis,design,codeandtest.Thefirsttwopartsofthisarticledescribesthebackgroundandrelatedtechnicalissues.Inthethirdpartofthedemandanalysis,usecasemodelasatooltoanalyzethefunctionalrequirementsofthesystemandnon-functionalrequirements.Thefourthsectiondescribesthedesignandimplementationofthissystemisthefocusofthisarticle,allcontentisaroundthisthemetoexpanddiscussed.Inthissection,describedindetailbasedonHTML5GeolocationAPIattendancemanagementsystemsoftwaredesign,implementation,andvariousprocessproblemsandsolutions.Thefifthpartofthisarticle,completetheapplicationofthetest,thetestingprocessandlistssomeofthedeficienciesfound.FinallyintroducesHTML5Geolocationapplicationprospect.ByHtml5Geolocationbasedattendancemanagementsystemdevelopmentprocessisdescribed,youcanlearnaHTML5applicationdevelopmentprocess.Inrecentyears,therapidriseofHTML5GeolocationpositioningforHTML5applicationdevelopmentwillhaveabroadprospect.【Keywords】HTML5GeolocationattendanceV 目录前言-1-第一章绪论-2-第一节课题的研究背景-2-第二节课题的研究目的和意义-2-第二章相关技术分析与介绍-4-第一节HTML5-4-一、HTML5简介-4-二、HTML5GeolocationAPI介绍-4-第二节HTML5GeolocationAPI的使用-9-一、检查浏览器的支持特性-9-二、位置请求-9-第三节开发集成环境-13-一、C#简介-13-二、系统架构:B/S架构-15-三、数据库软件:SQLServer2005-16-第四节百度地图-17-第三章基于HTML5Geolocation的考勤管理系统需求分析-18-第一节概述-18-一、考勤管理-19-二、考勤查询-19-三、公告-19-四、考勤报表-19-五、考勤设置-19-第三节非功能性需求-20-一、环境需求-20-二、界面需求-20-三、通用性需求-20-四、可靠性需求-20-五、可扩展性需求-20-六、异常处理-20-第四节可行性分析-21-V 一、经济可行性分析-21-二、运行可行性分析-22-三、法律可行性分析-22-第五节本章小结-23-第四章基于HTML5Geolocation考勤管理系统的设计-24-第一节功能框架设计-24-一、系统总体结构设计-24-二、管理员管理模块功能结构-24-三、其它功能模块-25-四、业务流程图-26-五、E-R图-26-六、用户管理表实体图及属性-28-七、考勤查询表的实体图及属性-28-第二节系统功能详细设计-29-一、数据库表的设计-29-二、登陆模块设计-30-第三节员工角色模块-31-一、员工登录-31-二、WEB考勤-31-三、个人信息-32-四、考勤记录-33-五、公告通知-33-第四节管理员角色模块-34-一、考勤管理-34-二、通知公告-37-三、人事管理-37-四、系统设置-38-第五章系统维护和改进-39-第一节系统测试-39-一、举例测试-39-二、测试项目-40-三、项目测试方法-41-四、系统优势-42-结论-43-参考文献-45-V 附录-46-一、关键代码:-46-二、英文原文:-55-三、英文翻译:-65-V 前言随着互联网的不断发展,互联网对人们的生活也在不断地变化和加强,人们渐渐地已经开始习惯于互联网所带来的各类服务与应用,并且享受着它带来的便利和丰富。当然随着互联网的基础用户和开发者不断增多,人们不断地去创造和完善它的速度也越来越快,无论从技术层面还是商业层面,新的模式和方法层出不穷,整个行业新陈代谢不断加速,新的应用和新的公司不断地挑战着新的技术和新的模式,由于整个行业存在创业成本很低、技术成本门槛却较高等特点,大公司也不断地推动着新的技术,基于此来创建一定的技术壁垒,同时基于此建立全新的服务和技术。但是毕竟整个互联网是一个开放的环境,大家需要一种标准,而不是一家独大的竞争下去,这样就一定会失去民心,所以HTML5这种更加新的标准和技术体系在不断地革新中发展壮大。HTML5是近十年来Web标准发展巨大的一个跨越,与以前的版本相比较,HTML5不仅用来表示Web内容,而是将Web引入一个比较成熟的应用平台,在这个平台上,视频、音频、图象和动画,以及标准化与电脑的交互。尽管HTML5的实现还有很长的路要走,但HTML5正在改变Web。另外,目前的互联网不仅仅是传统意义上面的互联网,所有的传统应用和模式正在向着更加移动和便捷发展,人们可能通过手机、平板电脑等各类移动设备来获取信息和使用更加丰富的应用,如物理位置定位信息等新的数据采集和多点触控、重力感应等新的交互方式的应用,未来必将也会改变人们生活的方方面面。HTML5中也加入了以上各类新的元素和功能,同时也考虑到了非健全人事使用互联网时可能带来的问题。所以,研究HTML5这种技术体系来尝试做一些应用是一个千载难逢的机遇,而基于这个变革的年代去使用类似的技术来创造更多新的应用更是能够改变这个世界的一次机会。该课题是基于HTML5来做一个最佳实践,完成之前不可能使用WEB技术来完成的功能,性能照比之前的技术体系要高出很多,而且有足够的前瞻性和创新性。互联网和其他的行业最大的区别就是这是一个创新驱动并且快速变化的行业,一种新的技术可能就会创造出新的应用、新的商业模式,该课题是基于HTML5技术在Web环境中实现的一个考勤系统,通过使用HTML5中的Geolocation来实现实时性,这无疑是对最新技术的一次最佳实践和学习,也是对自己的能力的一次历练。-70- 第一章绪论随着互联网技术和信息技术的日益成熟,人类社会开始进入信息时代。信息时代的到来给社会生活的各个方面带来了巨大的变化,这些变化同样也影响到了网络办公平台的建设。信息技术和信息系统几乎渗透到了网络办公的每一个细节,对网络办公平台的各个层次均产生了不容忽视的影响。第一节课题的研究背景随着计算机技术的飞速发展,计算机在管理中的广泛应用,利用计算机实现基于HTML5geolocation考勤管理势在必行。对于基于HTML5geolocation考勤管理来说,其中会员管理等是在随时变化的。利用计算机支持完成基于HTML5geolocation考勤管理事务,是适应现代企业制度要求的必要条件。然而基于HTML5geolocation考勤管理是一项繁琐而又细致的工作,一般不允许出错,计算机进行管理工作,不仅能够保证信息核对准确无误,而且还可以利用计算机对各种信息进行有效统计处理。基于HTML5geolocation考勤管理系统能够为管理员和用户提供充足的信息和快捷的查询手段。使用计算机对基于HTML5geolocation考勤进行管理,帮助用户更加快捷应用电脑搜寻所需相册信息,这些优点能够极大地提高查询的效率,同时,这也是移动客户服务管理科学化、正规化管理以及与世界先进管理技术接轨的重要条件。因此,建立起高效的基于HTML5geolocation考勤管理系统,能真正提升信息应用的效益。第二节课题的研究目的和意义基于HTML5geolocation考勤管理实质是信息技术的高效处理,以计算机为基础的现代信息处理的产生和发展,正是基于HTML5geolocation考勤管理现代化的客观要求。随着计算机在中国的普遍应用,越来越多的基于HTML5geolocation考勤管理者意识到基于HTML5geolocation考勤管理系统对管理自身发展的重要作用,投入大量的人力、物力、财力进行基于HTML5geolocation考勤管理系统的建设。现代科技的飞速发展,基于HTML5geolocation-70- 考勤管理系统处理从根本上可以为更多的管理者减少多方面的经济资源,在实际操作上也是提高用户与管理的效率捷径,能够很好地做到基于HTML5geolocation考勤管理信息的有效共享和协同。可以说,有效的基于HTML5geolocation考勤管理系统是实现良好的整合关系的重要保证。-70- 第二章相关技术分析与介绍第一节HTML5一、HTML5简介HTML标准从1999年12月发布的HTML4.01后,后继的HTML5和其它标准被束之高阁,为了推动Web标准化运动的发展,一些公司联合起来,成立了一个叫做WebHypertextApplicationTechnologyWorkingGroup(Web超文本应用技术工作组-WHATWG)的组织。WHATWG致力于Web表单和应用程序,而W3C(WorldWideWebConsortium,万维网联盟)专注于XHTML2.0。在2006年,双方决定进行合作,来创建一个新版本的HTML。HTML5草案的前身名为WebApplications1.0,于2004年被WHATWG提出,于2007年被W3C接纳,并成立了新的HTML工作团队。HTML5的第一份正式草案已于2008年1月22日公布。HTML5仍处于完善之中。然而,大部分现代浏览器已经具备了某些HTML5支持。2012年12月17日,万维网联盟(W3C)正式宣布凝结了大量网络工作者心血的HTML5规范已经正式定稿。根据W3C的发言稿称:“HTML5是开放的Web网络平台的奠基石。”支持Html5的浏览器包括Firefox(火狐浏览器),IE9及其更高版本,Chrome(谷歌浏览器),Safari,Opera等;国内的傲游浏览器(Maxthon),以及基于IE或Chromium(Chrome的工程版或称实验版)所推出的360浏览器、搜狗浏览器、QQ浏览器、猎豹浏览器等国产浏览器同样具备支持HTML5的能力。二、HTML5GeolocationAPI介绍地理位置(Geolocation)是HTML5-70- 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用程序。1、HTML5GeolocationAPI使用概述HTML5GeolocationAPI的使用方法。请求一个位置信息,如果用户同意,浏览器返回该位置信息,该位置是通过HTML5地理定位功能的底层设备(例如:笔记本电脑和手机)提供给浏览器的。位置由经度、纬度坐标和其他元素数据组成。有这些位置数据信息构建出位置感知类应用程序。2、位置数据信息位置信息由纬度、经度坐标和一些其他元数据组成。例如北京故宫的位置信息主要由一对纬度和经度坐标组成:纬度:北纬39.9,经度:东经116.4。经纬度坐标有两种表示方式:十进制格式(例如39.9)和DMS(DegreeMinuteSecond,角度)格式(例如39°54′20″)。HTML5GeolocationAPI返回的坐标格式为十进制格式。除了纬度和经度坐标,HTML5Geolocation还提供位置坐标的准确度。除此之外,它还会提供其他一些元数据,比如海拔、海拔准确度、行驶方向和速度等,具体情况取决于浏览器所在的硬件设备。3、位置信息来源及比较HTML5GeolocationaAPI不指定设备用哪种底层技术来定位应用程序的用户。它只用于检索位置信息的API,而且通过该API检索到的数据只具有某种程度的准确性。它并不保证设备返回的实际位置是精确的。位置信息一般从如下数据源获得:(1)IP地址(2)三维坐标(3)GPS(GlobalPositioningSystem,全球定位系统)(4)Wi-Fi(5)手机信号(6)用户自定义数据它们各有优缺点如表1.1所示,为了保证更高的准确度,许多设备使用多个数据源组合的方式。IP地址地理定位数据。以前,基于IP地址的地理定位是获取位置的唯一方式,其返回的位置信息通常并不靠谱。基于IP地理位置的定位方式是:自动查找用户的IP地址,然后检索其注册的物理地址。因此,如果用户的地址是ISP提供的,位置就会由服务器供应商的物理地址决定,而地址可能距离用户数千米。-70- GPS地理定位数据。能看到天空的地方,GPS就可以提供精确的定位结果。GPS定位是通过地球周围多个卫星的GPS卫星的信号实现的。GPS定位的时间比较长,所以不适合快速相应的应用程序。Wi-Fi地理定位数据。基于Wi-Fi地理定位信息是通过三角距离计算得出,三角距离指的是用户当前位置到已知的多个Wi-Fi(大多是在城市)接入点的距离。与GPS不同的是,Wi-Fi在室内也非常精确。手机地理定位数据。基于手机的地理定位信息是通过用户到一些基站的三角距离确定位置结果。经常与Wi-Fi和基于GPS的地理定位信息结合使用。用户自定义的地理定位数据。除去通过编程计算出用户的位置外,也可以通过用户自定义其位置。应用程序可以允许用户输入他们的地址、邮政编码和其他的一些关于位置的详细信息。应用程序通过这些数据信息来提供位置的感知服务。表1.1位置信息获取方式对比数据源优点缺点IP地址任何地方都可用在服务器端处理不精确(经常出错,一般精确到城市级)运算代价大GPS很精确定位时间长,耗电量大室内效果差需要额外硬件设备支持Wi-Fi精确可在室内使用简单、快捷在乡村这些Wi-Fi接入点少的地区无法使用手机信号相当准确可在室内使用简单、快捷需要能够访问手机或其modem设备用户自定义可获得比程序定位服务更准确的位置数据用户自行输入可能比自动检测更快可能很不准确,特别是当用户位置变更后4、浏览器支持情况各个浏览器对HTML5Geolocation的支持程度不同,并且还在不断更新中。在HTML5的所有功能中,HTML5Geolocation是第一批被全部接受和实现的功能之一,相关规范已经达到一个非常成熟的阶段,不大可能做太大改变。如表2.2所示,很多浏览器已经支持HTML5Geolocation:-70- 表2.2浏览器对HTML5Geolocation的支持情况浏览器支持情况Firefox3.5及以上版本支持Chrome在带有Gears的第2版Chrome中被支持InternetExplorer通过Gears插件支持Opera在版本10中支持Safari在版本4中支持以实现在iPhone上可用5、隐私机制HTML5Geolocation规范提供了一套保护用户隐私的机制。只有得到用户的许可,否者不可获取用户的地理位置。这个合理的隐私机制同样解释了用户一直对HTML5应用程序中的难题。从HTML5Geolocation的例子中可以看到,通常会鼓励用户共享这些信息。例如:用户在咖啡厅喝咖啡,如果应用程序可以让他们得知该咖啡店附近的商店在打折,那么用户就可以共享他们的位置信息是完全可以接受的。其中步骤如下:(1)用户浏览器打开应用程序的位置感应程序。(2)应用程序WEB页面加载,通过Geolocation函数调用请求。浏览器拦截请求,请求用户授权。如果同意继续执行,否则停止。(3)浏览器从宿主设备中检索坐标信息。例如:IP地址,Wi-Fi或GPS坐标。浏览器内部具有的功能。(4)浏览器将坐标发送给受信任的外部定位服务,返回一个详细的位置信息,病将该位置发回给HTML5Geolocation应用程序。6、隐私机制触发触发访问使用HTML5GeolocationAPI的页面时,会触发隐私保护机制。下图显示了在Firefox3.5中触发隐私保护机制的页面:-70- 图2.1在Firefox3.5中触发隐私保护机制的页面:程序调用HTML5Geolocation代码时后出发这一机制。仅仅添加HTML5Geolocation代码,而不被任何方法调用,则不会触发隐私保护机制。只要所添加的HTML5Geolocation代码被执行,浏览器就会提示应用程序需要共享他们的位置。执行HTML5Geolocation的方发很多,如调用navigation.geolocation.getCurrentPostion方法等。-70- 第二节HTML5GeolocationAPI的使用本小节详细讨论HTML5GeolocationAPI的使用方法。通过创建一个简单的浏览器页面,让读者更加了解其使用方法。一、检查浏览器的支持特性在调用HTML5GeolocationAPI函数前,需要确保支持所要完成的工作。在当前浏览器不支持的时候就可以提供一些代替文本,以提示用户升级所用的浏览器或者安装插件来增强现有浏览器的功能,以下代码是浏览器检查的一种途径。清单1.检查浏览器支持特性:functiontestSupport(){if(navigator.geolocation){document.getElementById(“support”).innerHTML="支持HTML5Geolocation。";}else{document.getElementById(“support”).innerHTML="该浏览器不支持HTML5Geolocation!建议升级浏览器或安装插件(如Gears)。";}}在此例子中,testSupport函数测试了浏览器的支持情况,该函数功能是在调用该函数时候如果存在地理定位的对象,navigator.geolocation)调用将返回该函数对象,否则触发错误。页面上会根据检测结果显示支持情况的提示信息。二、位置请求在HTML5Geolocation功能中,位置请求有两种:单次定位请求重复性位置更新请求1、单次位置请求在许多应用中,只检索或请求一次用户位置即可。例如前面提到的,午餐时间到了,要查询用户附近餐馆的特色菜及其价格和评论,就可以使用清单2所示的HTML5GeolocationAPI。清单2.单词定位请求APIVoidgetCurrentPosition(inPositionCallbacksuccessCallback,inoptionalPositionErrorCallbackerrorCallback,-70- inoptionalPositionOptionsoptions);该函数调用的详细分析。首先,因这个函数是通过navigatar.geolocation对象的调用。所以在本代码中需要爱获取次对象。因确保有一个后备函数,来对应不支持HTML5Geolocation的情况。这个函数接受一个必选参数和两个可选参数。函数参数successCallback为浏览器指明位置数据可用时应调用的函数。因为像获取位置数据这样的操作可能需要长时间才能完成,所以这个参数很重要。没有用户希望在检索位置时浏览器被锁定,也没有开发人员希望他的程序无限期暂停(特别是要成功取得位置信息,经常必须等待用户的许可)。successCallback是收到实际位置信息并进行处理的地方。跟绝大多数编程场景一样,最好提前准备出错处理。位置信息请求很可能因为一些不可控因素失败,对于这些情况,你可能需要提供一个用于跟用户解释或者提示其重试的successCallback函数。虽然此函数时可选的,不过建议选用。最后,options对象可以调整HTML5Geolocation()的javaScript函数,它使用最新的位置数据更新页面内容。同样地,也创建了一个handleLocationError()函数来处理错误情况。接下来,我们将研究这些函数的细节,而请求访问用户位置的核心代码如下所示:Navigator.geolocation.getCurrentPosition(updateLocation,handleLocationionError);updateLocation()函数updateLocation()函数是做什么的呢?实际上非常简单。只要浏览器具备访问位置信息的条件,就会调用updateLocation()函数,该函数只接受一个参数:位置对象。这个对象包含坐标(corrds特性)和一个获取位置数据时的时间戳。在实际开发中不一定需要时间戳,重要的位置都包含在了coords特性中。坐标总是有多个特性,但是浏览器和用户硬件设备会决定这些特性值是都有意义。以下是三个特性:(1)latitude(纬度)(2)Longitude(经度)(3)accuracy(准确度)毋庸置疑,这些特性的数据时必须的。Latitude和longitude将包含HTML5Geolocation服务测定得到最佳的十进制用户位置。Accurarcy将以m为制定纬度和经度值与实际位置间的差距,置信度为95%。局限于HTML5Geolocation的实现方式,位置只能粗略的近似值。在呈现返回值钱请一定要检查返回值的准确度。如果推荐的所谓的“附件的”鞋店,其实要耗费用户几小时的路程,可能会产生意想不到的后果。坐标还有一些其他特性,不能保证浏览器都为其提供支持,但如果不支持就会返回null:Latitude—用户位置的海拔高度,以m为单位;altitudeAccuracy—-70- 海拔高度的准确度,也是以m为单位,如果不支持altitude特性也会返回null;Heading—行进方向,相对于正北而言;Speed—地面速度,以m/s为单位。除非确定用户的设备能够访问这些信息,否则建议应用程序不要过于依赖它们。全球定位设备可能提供这种细节信息,而网络三角定位则不会。现在,让我们了解一下updateLocation()函数的实现代码(参见代码清单3),该函数依据坐标信息执行具体的更新操作。清单3.updateLocation()函数functionupdateLocation(position){varlatitude=position.coords.latitude;varlongitude=position.coords.longitude;varaccuracy=position.coords.accuracy;document.getElementById(“纬度”).innerHTML=latitude;document.getElementById(“经度”).innerHTML=longitude;document.getElementById(“准确度”).innerHTML=accuracy+“米”;}清单3给出了updateLocation()函数的常用实现代码,该函数根据坐标信息执行具体的更新操作:用获得的位置信息分别更新HTML页面上三个空间元素的文本。可选参数handleLocationError为浏览器指明出错处理函数。位置信息请求可能因为一些不可控因素失败,这时,您需要在这个函数中提供对用户的解释。幸运的是,该API已经定义了所有需要处理的错误情况的错误编号。错误编号code设置在错误对象中,错误对象作为error参数传递给错误处理程序。这些错误编号有:UNKNOWN_ERROR(0):不包括在其它错误编号中的错误,需要通过message参数查找错误的详细信息。PERMISSION_DENIED(1):用户拒绝浏览器获得其位置信息。POSITION_UNVAILABLE(2):尝试获取用户信息失败。TIMEOUT(3):在options对象中设置了timeout值,尝试获取用户位置超时。在这些情况下,您可以通知用户应用程序运行出了什么问题,如清单4所示清单4.使用错误处理函数functionhandleLocationError(error){switch(error.code){case0:updateStatus(“尝试获取您的位置信息时发生错误:”+error.message);break;case1:-70- updateStatus(“用户拒绝了获取位置信息请求。”);break;case2:updateStatus(“浏览器无法获取您的位置信息。”);break;case3:updateStatus(“获取您位置信息超时。”);break;}}可选参数options对象可以调整HTML5Geolocation服务的数据收集方式。该对象有三个可选参数:enableHighAccuracy:如果启动该参数,浏览器会启动HTML5Geolocation服务的高精确度模式,这将导致机器花费更多的时间和资源来确定位置,应谨慎使用。默认值为false;timeout:单位为ms,告诉浏览器获取当前位置信息所允许的最长时间。如果在这个时间段内未完成,就会调用错误处理程序。默认值为Infinity,即无穷大(无限制);maximumAge:以ms为单位,表示浏览器重新获取位置信息的时间间隔。默认值为0,这意味着浏览器每次请求时必须立即重新计算位置。使用可选参数options更新我们的位置请求,让其包含一个使用JSON对象表示的可选参数,如下所示:清单5.包含options的更新位置请求navigator.geolocation.getCurrentPosition(updateLocation,handleLocationError,{timeout:10000});这个调用告诉HTML5Geolocation,当获取位置请求的处理时间超过10s(10000ms)时触发错误处理程序,这时,errorcode应该是3。3、重复性位置更新请求有时候,仅获取一次用户位置信息是不够的。比如用户正在移动,随着用户的移动,页面应该能够不断更新显示附近的餐馆信息,这样,所显示的餐馆信息才对用户有意义。幸运的是,HTML5Geolocation服务的设计者已经考虑到了这一点,应用程序可以使用如下API进行重复性位置更新请求,当监控到用户的位置发生变化时,HTML5Geolocation服务就会重新获取用户的位置信息,并调用updateLocation()函数处理新的数据,及时通知用户。清单6.重复性位置更新请求APIvoidwatchPosition(updateLocation,optionalhandleLocationError,optionaloptions);这个函数的参数跟前面提到的getCurrentPosition函数的参数一样,不再重复介绍。-70- 关闭更新也很简单,如果应用程序不需要再接收用户的位置更新消息,只需要使用clearWatch()函数。清单7.watchPosition和clearWatch的使用varwatchId=navigator.geolocation.watchPosition(updateLocation,handleLocationError);//基于持续更新的位置信息实现一些功能…//停止接收位置更新消息navigator.geolocation.clearWatch(watchId);第三节开发集成环境一、C#简介C#是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员AndersHejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NETwindows网络框架的主角。C#最初它有个更酷的名字,叫做COOL。微软从1998年12月开始了COOL项目,直到2000年2月,COOL被正式更名为C#。在1998年,Delphi语言的设计者Hejlsberg带领着Microsoft公司的开发团队,开始了第一个版本C#语言的设计。在2000年9月,国际信息和通信系统标准化组织为C#语言定义了一个Microsoft公司建议的标准。最终C#语言在2001年得以正式发布。C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT.NET平台的应用程序,MICROSOFT.NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。 正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选——无论是高级的商业对象还是系统级的应用程序。使用简单的C#语言结构,这些组件可以方便的转化为XML网络服务,从而使它们可以由任何语言在任何操作系统上通过INTERNET进行调用。 C#使得C++程序员可以高效的开发程序,且因可调用由C/C++编写的本机原生函数-70- ,因此绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。C#是微软公司在2000年6月发布的一种新的编程语言,主要由安德斯·海尔斯伯格(AndersHejlsberg)主持开发,它是第一个面向组件的编程语言,其源码会编译成msil再运行。它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,并且新增了许多功能及语法糖,而且它是微软公司.NET windows网络框架的主角。原Broland公司的首席研发设计师安德斯·海尔斯伯格(AndersHejlsberg)在微软开发了VisualJ++1.0,很快的VisualJ++由1.1版本升级到6.0版。SUN公司认为VisualJ++违反了Java开发平台的中立性,对微软提出了诉讼。2000年6月26日微软在奥兰多举行的“职业开发人员技术大会”(PDC2000)上,发表新的语言C#。C#语言取代了VisualJ++,语言本身深受Java、C和C++的影响。C#是兼顾系统开发和应用开发的最佳实用语言,并且很有可能成为编程语言历史上的第一个“全能”型语言。看过这篇简史,不要把C#看成年轻后生了——只要是“马拉多纳”,就早晚当“球王”。C#1.0,纯粹的面向对象。1998年底,微软正在忙于新一代COM的设计工作,COM一直是组件化开发中非常成功的一种技术;但由于它仅提供了二进制层面上的统一,因此无法将类型信息和用于支持基础平台和开发工具的信息放到组件中,Java逐步走向成熟。微软学习Java的做法,将虚拟机的概念引入到了COM领域;同时,微软提出了“元数据”的概念,用于描述组件的类型信息和工具支持信息,并决定将其放入到组件当中。1998年12月,微软启动了一个全新的语言项目——COOL,这是一款专门为CLR设计的纯面向对象的语言,也正是本文的主角——C#的前身。1999年7月份,微软完成了COOL语言的一个内部版本。2000年2月份,微软才正式将COOL语言更名为C#。据说起这个名字是因为C#开发小组的人很讨厌搜索引擎,因此把大部分搜索引擎无法识别的“#”字符作为该语言名字的一部分;还有一种说法是在音乐当中“#”是升调记号,表达了微软希望它在C的基础上更上一层楼的美好愿望——当然这些都只是传说,无从考证。又是历经了一系列的修改,微软终于在2000年7月发布了C#语言的第一个预览版。C#旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言,此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(GarbageCollection,指一种自动内存释放技术)。软件必须做到强大、持久,并具有较强的编程生产力。此种语言为在分布式环境中的开发提供适用的组件开发应用。为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C和C++的程序员而言。对国际化的支持非常重要。C#适合为独立和嵌入式的系统编写程序,从使用复杂操作系统的大型系统到特定应用的小型系统均适用。-70- 在Java中,一个接口是一组方法集合的抽象定义.当一个类或结构体实现一个接口的时候,它必须实现这个接口中定义的所有方法.一个单一的类可以实现几个接口.也许以后会出现一些微妙的差别,但是这个特点看起来与Java相比没有变化。布尔运算:条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型.从布尔类型到其他类型没有直接的转换过程.布尔常量true和false是C#中的关键字.错误处理:如Java中那样,通过抛出和捕捉异常对象来管理错误处理过程.内存管理:由底层.NET框架进行自动内存垃圾回收。二、系统架构:B/S架构浏览器/服务器结构(Browser/Server,缩写为B/S)是一种特殊的客户机/服务器结构,它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。它主要应用在Internet,Intranett网是目前全球最大的计算机通信网,遍及全球几乎所有的国家和地区,Internet上提供了大量的服务,包括E-mail服务,文件传输服务,远程登录服务,BBS电子布告栏,News讨论区及www等。使用Internet可以得到很多便利,可以很方便的通过Internet提供的资料去查询和获取Internet的消息。www是一个涉及全世界的信息系统,是Internet上高效、方便的检索工具,www能够将Internet上不同站点上的相关细细资源以超文本、多媒体的方式有机的“编织"在一起,Internet用户提供全球范围内的服务。在www中采用Browser/Server结构,该模式具有功能分明,位置透明,共享资源,服务封装,同步/异步操作以及可扩展性等主要特征。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的[9]。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。用户在局域网各工作站通过WWW浏览器就能实现工作业务。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。三、数据库软件:SQLServer2005SQLServer2005是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。SQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。  SQLServer2005数据引擎是本企业数据管理解决方案的核心。此外SQLServer2005结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的BI解决方案,帮助您的团队通过记分卡、Dashboard、Webservices-70- 和移动设备将数据应用推向业务的各个领域。  与MicrosoftVisualStudio、MicrosoftOfficeSystem以及新的开发工具包(包括BusinessIntelligenceDevelopmentStudio)的紧密集成使SQLServer2005与众不同。无论您是开发人员、数据库管理员、信息工作者还是决策者,SQLServer2005都可以为您提供创新的解决方案,帮助您从数据中更多地获益。  Microsoft仔细倾听了您的反馈,并对行业进行了认真研究,全世界的Microsoft研究团队共同努力,经过创造性思索才最终向您奉献出这一引入了上百种新增功能或改进功能的SQLServer2005。这些功能将有助于您在以下三个主要方面提高业务:1、企业数据管理  SQLServer2005针对行业和分析应用程序提供了一种更安全可靠和更高效的数据平台。SQLServer的最新版本不仅是迄今为止SQLServer的最大发行版本,而且是最为可靠安全的版本。2、开发人员生产效率SQLServer2005提供了一种端对端的开发环境,其中涵盖了多种新技术,可帮助开发人员大幅度提高生产效率。3、商业智能SQLServer2005的综合分析、集成和数据迁移功能使各个企业无论采用何种基础平台都可以扩展其现有应用程序的价值。构建于SQLServer2005的BI解决方案使所有员工可以及时获得关键信息,从而在更短的时间内制定更好的决策。-70- 第四节百度地图一、什么是百度地图百度地图是百度提供的一项网络地图搜索服务,覆盖了国内近400个城市、数千个区县。在百度地图里,用户可以查询街道、商场、楼盘的地理位置,也可以找到离您最近的所有餐馆、学校、银行、公园等等。2010年8月26日,在使用百度地图服务时,除普通的电子地图功能之外,新增加了三维地图按钮。二、百度地图APIAPI(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。-70- 第三章基于HTML5Geolocation的考勤管理系统需求分析第一节概述HTML5Geolocation的到来,使得远程考勤不再像以前那样复杂。加上定位技术的支持,移动终端、PC定位由于具有方便、快捷等特点,成为市场上考勤业务中的新星,并逐步成为市场上的核心业务之一。本软件是根据市场上同类软件的普遍需求开发,利用百度地图和Geolocation提供的位置信息,在基于HTML5GeolocationAPI使用的一款远程考勤系统。用户可以使用本软件完成远程打考勤、查询考勤情况,具有权限的人还可以事实查询整个公司的考勤情况,周考勤报表、月考勤报表等功能。图3.1从用例的角度描述了系统所需具备的功能。图3.1系统功能用例图-70- 第二节功能性需求一、考勤管理整个系统软件是一个调用HTML5GeolocationAPI获取用户的地理位置,根据返回的位置确定每个员工是否到指定的工作地点上班,并用地图显示出位置。通过对这些数据的收集管理公司的考勤情况。二、考勤查询员工登录过后可以对自己的考勤情况进行查询,管理员则实时对考勤的情况做出汇总,为公司管理员工的考勤做出相应的数据支撑。三、公告随着社会的进步,上班的地点分散,有些公司的通知更新情况时时都在不断的变化中,该公告模块在员工签到和退签的时候,登录以后就可以看到公司的最新动态。四、考勤报表该系统通过对员工考勤的数据进行汇总,可以分别对员工个人、部门、以及整个公司的考勤情况收集,了解整个公司的考勤信息。五、考勤设置管理员能够对考勤时间的设置,及时更新。-70- 第三节非功能性需求一、环境需求环境需求是软件实际运行时所需的软硬件环境,需要考虑硬件设备需求、浏览器版本等方面的要求。本软件是运行在WEB上的基于HTML5Geolocation系统软件,需要该设备支持HTML5Geolocation。在使用时注意浏览器的选择。二、界面需求首要要求是界面友好,界面布局合理,风格保持一致。用户除必要的自主输入外,其余操作均可在软件的提示下选择完成,增加可用性。在搜索连接服务器并对结果进行解析时,如网络不畅,会存在一定时延,需要连接等待条,提示用户耐心等待。列表显示操作结果时,充分考虑结果的长度,避免部分信息显示不全。三、通用性需求本软件应采用普遍应用的目前主流的浏览器上,目前大部分浏览器都已经支持HTML5Geolocation,使得能够在使用新版本特性的同时,确保良好的统一性。四、可靠性需求本软件要保证运行的稳定可靠,主要包括数据的可靠性和系统的稳定性。数据可靠性包括数据个人独享、安全可靠等;系统稳定性要求软件系统能够持续无故障运行。五、可扩展性需求要求采用开放的标准的体系架构、模块化设计,能实现功能、性能的简单、方便的扩展和改造。六、异常处理1、HTML5Geolocation定位异常当浏览器不支持时,能够向用户发出提醒,并切换至支持的浏览器。-70- 2、互联网/服务器异常如果由于网络或服务器原因,重试一定次数后,任然不能正常使用提醒用户检查网络状态。3、结果异常在当获取的数据返回的误差大于一定的规定范围时候,提醒用户该数据不可用。第四节可行性分析在实施一个项目之前,首先要对将要实施的项目进行可行性分析,确定项目是否值得进行。并不是所有的问题都有简单明显的解决办法,事实上,许多问题不可能在预定的系统规模之内解决。如果问题没有可行解的话,那么花费在这项工程上的任何时间、资源、人力和经费都是浪费的。可行性分析的目的就是用最小的代价在尽可能短的时间内确定问题能否解决。可行性研究的目的不是解决问题,而是确定问题是否值得去解。如果是正确的就加以肯定。可行性分析的实现,不能靠主观猜想,只能客观分析达到这个目的,所以就必须分析几种方法解决可能的弊端,从而判断原定的系统目标和规模是否实现,系统完成后所能带来的价值是否大于开发这个系统的投资价值。因此,可行性研究实质上是要进行一次大大的压缩简化了系统分析和设计的过程。我们应该给出系统的逻辑模型,然后从系统逻辑模型出发,寻找可供选择的解法,研究每一种解法的可行性。一般说来,应从技术可行性、经济可行性、操作可行性等方面进行研究。一、经济可行性分析新系统的经济可行性分析的含义是,估计新系统开发和运行所需的费用,以及新系统的效益,将投资和效益进行比较,说明在经济上是合算的。本系统投资低,只需配置一台稍好的电脑及相关的应用软件,此外本系统能够提高数据处理的及时性和准确性;降低了管理人员的劳动强度,提高了劳动效率;使用信息更加方便,从而使决策更及时、准确;取得了其他经济和社会效益。本环节通过分析新系统的成本效益,其中包括估计项目开发的成本,开发费用和今后的运行、维护费用以及新系统将获得的效益,估算开发成本是否高于项目预期的全部经费。下面具体列出了成本和效益的分析:1、支出-70- 现在电脑的应用已经得到了普及是基础的信息化设施,目前使用计算机进行软件开发,网络环境和基础设施能满足本系统的实施要求,所以无须另外的资金投入。其它一次性支出:由于本系统的开发是作为课程实践来进行的,无须资金投入,而且本系统所用到的软件成本投入也不高。因此软件设计和开发费可以承受。经常性支出:系统运行后的日常维护费用少。仅需简单的管理中心,该中心的工作人员可以负责本系统的维护工作。2、效益本系统的效益可以从经济效益和社会效益两方面考虑。其社会效益包括系统投入运行后可以使管理实现科学化、规范化,增强用户对知识信息的管理能力,从而提高工作效率,从长远来看,也是信息化的必经之路。由此可见系统的建设还是非常有发展前景的。二、运行可行性分析本系统的客户端采用的是图形界面方式,由于管理工作人员日常所使用的操作系统都是Windows系统,所以经过简单的培训就可以胜任新系统的操作工作。新系统的目标就是帮助实现资料的管理,并且新系统的运行不会对组织机构和管理方式产生大的影响,所以不会受到任何阻碍。系统的设计上需要注重安全性和用户操作的流畅性。因此要在对管理者权限做出限定,只有经过审核确认的账号才有权使用。三、法律可行性分析法律可行性主要是指待开发的软件是否存在知识产权等与法律有关的问题,如有这类问题,该软件即使开发成功,也难以成为产品销售。开发该系统的所有软件都使用正版,且属于自主设计,无剽窃他人设计行为。因此,开发本系统在法律上是可行的。-70- 第五节本章小结对于开发者来说,要开发出一个良好的软件系统,首先要明确该系统的需求。需求分析是用户与软件设计人员之间的桥梁。对项目需求的分析越透彻,在功能实现上越能满足用户的需求。因此,在本章中,主要完成了对基于HTML5Geolocation考勤系统软件需求的分析,分别对系统的功能需求和非功能需求逐一做了描述,明确了系统的功能,为接下来的设计和实现提供了依据。下一章就在本章的需求分析基础上,具体讲本系统的设计。-70- 第四章基于HTML5Geolocation考勤管理系统的设计第一节功能框架设计一、系统总体结构设计基于HTML5Geolocation考勤系统主要分为两个模块。如图所示功能。图4.1基于HTML5geolocation考勤管理系统功能图二、管理员管理模块功能结构管理员具有该系统的所有权限,以便对整个系统参与考勤人员进行管理。-70- 图4.2管理员管理模块功能结构图三、其它功能模块支持系统的系统公告、报表查询功能、系统设置功能、人事管理,提供系统帮助信息。如图所示功能。图4.3其他模块功能图-70- 四、业务流程图图4.4业务流程图五、E-R图E-R图也即实体-联系图(EntityRelationshipDiagram),提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素是实体型、属性和联系,其表示方法为:  实体型(Entity):具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体;在E-R图中用矩形表示,矩形框内写明实体名;比如学生张三丰、学生李寻欢都是实体。如果是弱实体的话,在矩形外面再套实线矩形。  属性(Attribute):实体所具有的某一特性,一个实体可由若干个属性来刻画。在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来;比如学生的姓名、学号、性别、都是属性。如果是多值属性的话,再椭圆形外面再套实线椭圆。如果是派生属性则用虚线椭圆表示。  -70- 联系(Relationship):联系也称关系,信息世界中反映实体内部或实体之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。在E-R图中用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。以下是该系统的重要E-R图:图4.5管理员E-R图图4.6员工E-R图-70- 六、用户管理表实体图及属性图4.7用户管理表实体及属性七、考勤查询表的实体图及属性图4.8用户管理表实体及属性-70- 第二节系统功能详细设计本项目中主要的角色用两种,分别为管理员和普通员工,其中该系统的主要功能为公司的每个员工签到打考勤,管理员角色通过考勤进行管理和查询。一、数据库表的设计数据表是数据库中一个非常重要的对象,是其他对象的基础。没有数据表,关键字、主键、索引等也就无从谈起。在数据库画板中可以显示数据库中的所有数据表(即使不是用PowerBuilder创建的表),创建数据表,修改表的定义等数据表是数据库中一个非常重要的对象,是其他对象的基础。根据系统功能设计的要求以及功能模块的划分,对于系统信息数据库,可以列出以下数据项和数据结构:表4.1用户管理表:表名:user列名数据类型长度字段描述规则IdInt序号不允许空,标示列主键,自增Namevarchar50姓名不允许空Agevarchar50年龄不允许空Telephonevarchar50电话不允许空Original-passwordVarchar50原密码不允许空New-passwordVarchar50新密码不允许空Repeat-new-passwordVarchar50重复新密码不允许空-70- 表4.2为签到表表名:attendance列名数据类型长度字段描述规则Idbigint序号不允许空,标示列主键,自增Timefloat50时间不允许空Sectionfloat50部门不允许空Staffint50员工不允许空Typeint50打卡类型不允许空Check-adressvarchar10签到地址不允许空二、登陆模块设计登录模块功能:本模块主要用于对用户身份进行鉴别。用户通过表单提供用户名、密码信息,系统根据用户提供的登录信息对用户进行身份查询鉴别。如果身份合法,则将用户导向系统的主页面并记录用户的相关信息,留待以后的系统页面使用。输入:用户名、密码、验证码。(1)输入用户的登录信息。在页面提供的表单出输入用户的用户名、密码信息和验证码,点击“登录”按钮提交表单信息到身份验证页面。或点击“重填”按钮,重新输入。(2)从users表单获取输入数据。当用户单击“登录”按钮后,登录信息由form表单提交进行处理。(3)用户身份进行验证。连接数据库,打开用户数据表users,检验用户登录信息。以输入数据“用户名”为查询条件创建数据集查看输入用户名是否存在。如果存在,继续检验输入的密码是否正确。密码和用户名都正确,则进入办公管理系统主页面;如果用户名不存在或密码不正确或验证码不正确,则给出登录失败的提示框,并返回首页重新登录。-70- 第三节员工角色模块员工登录该考勤系统后,分别有WEB考勤、个人信息、考勤记录、公告等功能。一、员工登录图4.8为员工登录考勤系统二、WEB考勤图4.9为员工考勤时候的详细信息员工确认后点击签到界面:-70- 图4.10签到成功后的界面三、个人信息图4.11为员工个人信息情况-70- 四、考勤记录图4.12为员工考勤记录五、公告通知图4.13公告通知-70- 第四节管理员角色模块管理员登录系统可以对系统进行管理,主要的功能有考勤管理、通知公告、人事管理、系统设置。登录界面:图4.14管理员登录界面一、考勤管理考勤管理模块中有考勤查询、周报表、月报表的查看。其中考勤查询可以分部门查询。考勤总体查询:-70- 图4.15考勤查询分部门查询:图4.16按部门查询-70- 周报表,其中可以选择查询的周期:图4.17考勤周报表考勤月报表:图4.18考勤月报表-70- 二、通知公告公告通知分为公告列表和添加公告两个模块:其中公告列表是显示现有的公告,添加公告可以编辑添加公告。管理员可以对公告进行管理,有新建公告、编辑公告、删除公告。图4.19公告模块三、人事管理人事管理模块可以对部门和员工分别管理。部门管理:图4.20部门管理员工管理:-70- 图4.21员工管理四、系统设置系统设置主要是为考勤设置上班和下班时间。图4.22系统设置-70- 第五章系统维护和改进第一节系统测试系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。它的的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统"做得怎样?"。这阶段又可分为三个步骤:模块测试,测试每个模块的程序是否有错误;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。该阶段结束应交付测试报告,说明测试数据的选择,测试用例以及测试结果是否符合预期结果。测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下来进行测试。由于系统测试的目的是验证最终软件系统满足产品需求并且遵循系统设计,所以当产品需求和系统设计文档完成之后,系统测试小组就可以提前开始制定测试计划和设计测试用例,而不必等到“实现与测试”阶段结束。这样可以提高系统测试的效率。一、举例测试1、测试用户登陆是否成功:打开电子数码相册系统,在“用户名”里填入admin,“密码”框里我们填入admin作为用户登录密码。填写完成点击“确定”按钮,将会出现操作程序页面,即该用户已经登陆成功了。再运行程序,会有提示页面出现:程序已经运行,不能再次装载!2、测试其他用户是否能够登录:打开管理系统登录页面,输入任意密码,点击“登录”按钮。将出现密码出错提示页面。然后点“确定”返回系统登录页面。3、测试编辑功能是否成功:-70- 编辑功能:在登录成功之后,即可进入相应的管理页面,即可以修改和删除相片的信息资料,最后保存。4、用户退出系统的测试:在管理操作已全部完成,需要退出程序的时候,在系统页面“系统设置”下拉菜单的有一个“退出系统”的选项,点击之后便可退出。也可以点“关闭”退出。5、测试密码更改:在管理者登录的情况下,在程序中打开系统管理,即可查看相关信息并且可以添加新的账户信息、删除或者更改账户状态。经过以上各项的测试,证明本系统完全可以正常运行,至此测试成功!二、测试项目在系统开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,不经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是系统开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占系统开发总工作量的40%以上。因此,我们必须重视测试工作。由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。测试对象是随不同阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。1、单元测试:单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。单元测试一般是由程序员完成,也称程序调试。2、组合测试-70- 组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。组合测试的对象是指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。3、确认测试确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上,确认测试的目的是表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。确认测试是按照这些要求定出的“确认测试计划”进行的。测试工作是由一个独立的组织进行,而且测试要从用户的角度出发。4、系统测试系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统是否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行或略慢。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。5、用户验收测试在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。三、项目测试方法一般来说,对程序测试有两种测试方法:如果已经知道了软件系统应具有的功能,可通过测试来对每个功能是否都能正常使用;如果知道程序的内部工作过程,可以通过测试来检测程序内部是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒子测试。黑盒测试又称为功能测试,白盒子测试又称为结构测试。经过几个月的毕业设计,因为时间的关系,没有完全按照上述的测试方法进行系统的测试,但经过一些简单的步骤的测试,证明本系统具有相当程序的稳定性。-70- 四、系统优势功能实用:以相册信息管理要解决的实际问题为目标,设计开发了各个实用的功能,可以完全满足各项服务。使用简单:软件界面简洁、使用方便,只要会操作电脑,就会操作软件,可以方便操作。投资回报率高:可以有效地实现考勤信息化管理,带来间接的经济效益和工作效率。-70- 结论通过本课题对基于HTML5技术的研究和实践,完成了一个纯粹由WEB技术中开放的HTML5技术标准和Javascript语言实现的实时性考勤系统。这充分的说明了下一代互联网标准HTML5的强大能力,并且直接通过浏览器打开的应用具有非常好的用户体验和较高的客户端安全性,这是其他的技术所不具备的优势。在课题的研究和实践中遇到了资料不足,技术API总是修改等诸多的问题,但是也正是通过互联网,秉承着互联网中开放、分享、共同成长的精神,和网上有着同样爱好的技术人员交流和学习,困难都被成功的解决,可见互联网的意义和价值。而用来构建下一代互联网的技术又是这么的强大,所以未来的互联网将会发展的更为强大,能够带给人们更多意想不到的体验。目前各大浏览器厂商也加大研发力度,全部发力于HTML5。看到了Iphone和Ipad上的Safrai浏览器、看到了Operamobile浏览器,我看到了HTML5未来在移动客户端的前景和发展,未来的互联网不仅仅是属于PC的,而是属于所有用户的。这些用户可能用平板电脑、可能是Android手机的用户、可能是Iphone的用户或者是某种现在还没有的设备的用户,但是可以肯定他们都将会更好的接入互联网,更方便快捷的访问互联网中的信息,加之IPv6的全面使用,互联网基础架构层以实现了技术的改造和迁移。而客户端的HTML5正是用来解决应用层技术架构的问题,技术的发展推动着模式的创新,而不断的创新又不断的孕育出新的技术,这样的良性的循环在互联网这个前沿、高科技并且产品迭代速度快的行业中尤其突出。-70- 致谢谨向所有关心、支持与帮助我的老师、同学、亲人和朋友们表示最诚挚的谢意!-70- 参考文献[1]柳伯斯,阿伯斯,萨姆.HTML5高级程序设计[M].北京:人民邮电出版社,2011.[2]罗森,夏普.HTML5用户指南[M].北京:机械工业出版社,2011.[3]刘红伟.HTML5和样式应用指南[M].北京:机械工业出版社,2011.[4]陆凌牛.HTML5与CSS3权威指南[M].北京:机械工业出版社,2011.[5]泽卡斯.JavaScript高级程序设计(第2版)[M].北京:人民邮电出版社,2010.[6]费拉提.JavaScript权威指南(第五版)[M].北京:机械工业出版社,2007.[7]月影.JavaScript王者归来[M].北京:清华大学出版社,2008.[8]亚当斯.JavaScript艺术与科学[M].北京:电子工业出版社,2010.[9]泽卡斯.高性能JavaScript[M].北京:电子工业出版社,2010.[10]克罗克福德.JavaScript语言精粹[M].北京:电子工业出版社,2009.[11]哈梅斯,迪亚斯.JavaScript设计模式[M].北京:人民邮电出版社,2009.[12]JulieC.Meloni,MichaelMorrison.SamsTeachYourselfHTMLandCSSin24Hours[M].2010.[13]MatthewDavid.HTML5:DesigningRichInternetApplications[M].2011.[14]BrianP.Hogan.HTML5andCSS3:DevelopwithTomorrow"sStandardsToday[M].2010.[15]MarkPilgrim.HTML5:UpandRunning[M].2010.[16]RobHawkes.FoundationHTML5Canvas:ForGamesandEntertainment[M].2010.-70- 附录一、关键代码:1.考勤签到HTML5GeolocationAPI的调用以及显示在地图上关键代码:///显示时间functionshow(){varcurTime=newDate();document.getElementById("showcurrenttime").innerHTML=curTime.toLocaleString();setTimeout("show()",1000)}///Html5Geolocation取得定位信息functionloadGeolocation(){if(navigator.geolocation){//document.getElementById("support").innerHTML="您的浏览器支持定位功能!";navigator.geolocation.getCurrentPosition(function(glc){//调用成功!document.getElementById("<%=txt_accurancy.ClientID%>").value=glc.coords.accuracy;document.getElementById("<%=txt_latitude.ClientID%>").value=glc.coords.latitude;document.getElementById("<%=txt_longitude.ClientID%>").value=glc.coords.longitude;document.getElementById("<%=txt_altitude.ClientID%>").value=glc.coords.altitude;document.getElementById("<%=txt_heading.ClientID%>").value=glc.coords.heading;-70- document.getElementById("<%=txt_speed.ClientID%>").value=glc.coords.speed;loadBaiduMap(glc.coords.longitude,glc.coords.latitude);},function(e){//调用失败document.getElementById("support").innerHTML="获取位置信息出错,计算机将根据你的ip地址进行定位";},{timeout:30000});}else{document.getElementById("support").innerHTML="您的浏览器不支持定位功能!";}}//加载百度地图functionloadBaiduMap(p_longitude,p_latitude){//创建百度地图对象varmap=newBMap.Map("baiduMapContainer");vargpsPoint=newBMap.Point(p_longitude,p_latitude);//GPS坐标转换为百度坐标BMap.Convertor.translate(gpsPoint,0,function(point){map.centerAndZoom(point,15);varmarker=newBMap.Marker(point);//创建标注map.addOverlay(marker);//将标注添加到地图中//查找地址//varmap=newBMap.Map("container");//map.centerAndZoom(newBMap.Point(116.404,39.915),11);//创建地理编码实例varmyGeo=newBMap.Geocoder();//根据坐标得到地址描述-70- myGeo.getLocation(point,function(result){if(result){address=result.address;//创建地址信息窗口varopts={width:80,//信息窗口宽度height:30,//信息窗口高度title:"您现在的位置"}varinfoWindow=newBMap.InfoWindow(address,opts);marker.addEventListener("click",function(){this.openInfoWindow(infoWindow);});document.getElementById("<%=txt_address.ClientID%>").value=address;}else{//创建信息窗口varopts={width:80,//信息窗口宽度height:30,//信息窗口高度title:"您现在的位置"}varinfoWindow=newBMap.InfoWindow("加载地址失败…",opts);marker.addEventListener("click",function(){this.openInfoWindow(infoWindow);});}});});}window.onload=function(){loadGeolocation();}-70- 2.考勤月统计报表代码namespaceAttendanceMgr.Web.Admin{publicpartialclassAttendanceMonth:AttendanceMgr.Web.Codes.BasePageAdmin{privateint_Windex{get{if(Session["windex"]==null){Session["windex"]=0;}returnConvert.ToInt32(Session["windex"]);}set{Session["windex"]=value.ToString();}}privateDateTime_FirstDate;privateDateTime_NextFirstDate;protectedList>DataSources{get;set;}protectedint应出勤天数;publicvoidBindData(){varcurrentday=DateTime.Now.AddMonths(_Windex);_FirstDate=newDateTime(currentday.Year,currentday.Month,1);_NextFirstDate=_FirstDate.AddMonths(1);-70- DataSources=newModel.DataClasses1DataContext().考勤.Where(i=>i.打卡时间>=_FirstDate&&i.打卡时间<_NextFirstDate).GroupBy(i=>i.员工ID).ToList();lab_cnt1.Text=lab_cnt2.Text=DataSources.Count.ToString();lab_TimeSpan.Text=string.Format("{0:yyyy年MM月}",_FirstDate);}protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){BindData();}}protectedvoidBtn_NextWeek_Click(objectsender,EventArgse){_Windex=_Windex+1;BindData();}protectedvoidBtn_LasWeek_Click(objectsender,EventArgse){_Windex=_Windex-1;BindData();}//////取得统计数据/////////应出勤///实际出勤///迟到-70- ///早退///旷工///应付款///protectedboolGetData(intid,outintycq,outintsjcq,outintcd,outintzt,outintkg,outdecimalmoney){//判断工作日intdays=(_NextFirstDate.AddDays(-1)-_FirstDate).Days;//总天数intweeks=days%7;//星期数intlesdays=days=weeks*7;//生于天数ycq=0;switch(_FirstDate.DayOfWeek){caseDayOfWeek.Monday:if(lesdays>=5){ycq=(weeks+1)*5;}else{ycq=(weeks+1)*5;}break;caseDayOfWeek.Tuesday:if(lesdays<=4){ycq=weeks*5+lesdays;}else{ycq=(weeks+1)*5;}break;caseDayOfWeek.Wednesday:if(lesdays<=3){ycq=weeks*5+lesdays;}elseif(lesdays==6){ycq=(weeks+1)*5+lesdays-5;}else{ycq=(weeks+1)*5;}break;caseDayOfWeek.Thursday:if(lesdays<=2){ycq=weeks*5+lesdays;}elseif(lesdays>=5){ycq=(weeks+1)*5+lesdays-4;}else{ycq=(weeks+1)*5;}break;caseDayOfWeek.Friday:if(lesdays<=1){ycq=weeks*5+lesdays;}elseif(lesdays>=4){ycq=(weeks+1)*5+lesdays-3;}else{ycq=(weeks+1)*5;}break;caseDayOfWeek.Saturday:-70- if(lesdays>=3){ycq=(weeks+1)*5+lesdays-2;}else{ycq=(weeks+1)*5;}break;caseDayOfWeek.Sunday:if(lesdays>=2){ycq=(weeks+1)*5+lesdays-1;}else{ycq=(weeks+1)*5;}break;}//---------varctx=newModel.DataClasses1DataContext();varmodels=ctx.考勤.Where(i=>i.员工ID==id&&i.打卡时间>=_FirstDate&&i.打卡时间<_NextFirstDate);DateTimeshangban=Convert.ToDateTime("2000-1-1"+ctx.系统配置.Where(i=>i.配置项=="上班时间").FirstOrDefault().设置值);DateTimexiaban=Convert.ToDateTime("2000-1-1"+ctx.系统配置.Where(i=>i.配置项=="下班时间").FirstOrDefault().设置值);cd=1;zt=1;sjcq=models.Count();kg=ycq-sjcq;money=0;returntrue;}}}3.考勤系统员工登录代码namespaceAttendanceMgr.Web{publicpartialclassLogin:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack)-70- {}}protectedvoidButton1_Click(objectsender,EventArgse){stringusername=txtUserName.Text.Trim();stringpassword=txtPassword.Text.Trim();if(string.IsNullOrEmpty(username)||string.IsNullOrEmpty(password)){ScriptManager.RegisterClientScriptBlock(this,this.GetType(),"提醒","alert("请输入用户名和密码!");",true);return;}if(Codes.CodeHelper.CheckUser(this.Context,username,password)){Response.Redirect("/Default.aspx");}else{ScriptManager.RegisterClientScriptBlock(this,this.GetType(),"错误","alert("用户名或密码错误!");",true);return;}}}}-70- 二、英文原文:GeolocationAPISpecificationAbstractThisspecificationdefinesanAPIthatprovidesscriptedaccesstogeographicallocationinformationassociatedwiththehostingdevice.1.IntroductionTheGeolocationAPIdefinesahigh-levelinterfacetolocationinformationassociatedonlywiththedevicehostingtheimplementation,suchaslatitudeandlongitude.TheAPIitselfisagnosticoftheunderlyinglocationinformationsources.CommonsourcesoflocationinformationincludeGlobalPositioningSystem(GPS)andlocationinferredfromnetworksignalssuchasIPaddress,RFID,WiFiandBluetoothMACaddresses,andGSM/CDMAcellIDs,aswellasuserinput.NoguaranteeisgiventhattheAPIreturnsthedevice"sactuallocation.TheAPIisdesignedtoenableboth"one-shot"positionrequestsandrepeatedpositionupdates,aswellastheabilitytoexplicitlyquerythecachedpositions.Locationinformationisrepresentedbylatitudeandlongitudecoordinates.TheGeolocationAPIinthisspecificationbuildsuponearlierworkintheindustry,including[AZALOC],[GEARSLOC],and[LOCATIONAWARE].2.ScopeThisspecificationislimitedtoprovidingascriptingAPIforretrievinggeographicpositioninformationassociatedwithahostingdevice.ThegeographicpositioninformationisprovidedintermsofWorldGeodeticSystemcoordinates[WGS84].Thescopeofthisspecificationdoesnotincludeprovidingamarkuplanguageofanykind.ThescopeofthisspecificationdoesnotincludedefiningnewURIschemesforbuildingURIsthatidentifygeographiclocations.3.SecurityandprivacyconsiderationsTheAPIdefinedinthisspecificationisusedtoretrievethegeographiclocationofahosting-70- device.Inalmostallcases,thisinformationalsodisclosesthelocationoftheuserofthedevice,therebypotentiallycompromisingtheuser"sprivacy.Aconformingimplementationofthisspecificationmustprovideamechanismthatprotectstheuser"sprivacyandthismechanismshouldensurethatnolocationinformationismadeavailablethroughthisAPIwithouttheuser"sexpresspermission.3.1PrivacyconsiderationsforimplementersoftheGeolocationAPIUseragentsmustnotsendlocationinformationtoWebsiteswithouttheexpresspermissionoftheuser.Useragentsmustacquirepermissionthroughauserinterface,unlesstheyhaveprearrangedtrustrelationshipswithusers,asdescribedbelow.Theuserinterfacemustincludethehostcomponentofthedocument"sURI[URI].Thosepermissionsthatareacquiredthroughtheuserinterfaceandthatarepreservedbeyondthecurrentbrowsingsession(i.e.beyondthetimewhenthebrowsingcontext[BROWSINGCONTEXT]isnavigatedtoanotherURL)mustberevocableanduseragentsmustrespectrevokedpermissions.Someuseragentswillhaveprearrangedtrustrelationshipsthatdonotrequiresuchuserinterfaces.Forexample,whileaWebbrowserwillpresentauserinterfacewhenaWebsiteperformsageolocationrequest,aVOIPtelephonemaynotpresentanyuserinterfacewhenusinglocationinformationtoperformanE911function.3.2PrivacyconsiderationsforrecipientsoflocationinformationRecipientsmustonlyrequestlocationinformationwhennecessary.Recipientsmustonlyusethelocationinformationforthetaskforwhichitwasprovidedtothem.Recipientsmustdisposeoflocationinformationoncethattaskiscompleted,unlessexpresslypermittedtoretainitbytheuser.Recipientsmustalsotakemeasurestoprotectthisinformationagainstunauthorizedaccess.Iflocationinformationisstored,usersshouldbeallowedtoupdateanddeletethisinformation.Therecipientoflocationinformationmustnotretransmitthelocationinformationwithouttheuser’sexpresspermission.Careshouldbetakenwhenretransmittinganduseofencryptionisencouraged.Recipientsmustclearlyandconspicuouslydisclosethefactthattheyarecollectinglocationdata,thepurposeforthecollection,howlongthedataisretained,howthedataissecured,howthedataissharedifitisshared,howusersmayaccess,updateanddeletethedata,andanyotherchoicesthatusershavewithrespecttothedata.Thisdisclosuremustincludeanexplanationofanyexceptionstotheguidelineslistedabove.-70- 3.3AdditionalimplementationconsiderationsFurthertotherequirementslistedintheprevioussection,implementersoftheGeolocationAPIarealsoadvisedtoconsiderthefollowingaspectsthatmaynegativelyaffecttheprivacyoftheirusers:incertaincases,usersmayinadvertentlygrantpermissiontotheuseragenttodisclosetheirlocationtoWebsites.Inothercases,thecontenthostedatacertainURLchangesinsuchawaythatthepreviouslygrantedlocationpermissionsnolongerapplyasfarastheuserisconcerned.Ortheusersmightsimplychangetheirminds.Predictingorpreventingthesesituationsisinherentlydifficult.Mitigationandin-depthdefensivemeasuresareanimplementationresponsibilityandnotprescribedbythisspecification.However,indesigningthesemeasures,implementersareadvisedtoenableuserawarenessoflocationsharing,andtoprovideeasyaccesstointerfacesthatenablerevocationofpermissions.4.APIDescription4.1GeolocationinterfaceTheGeolocationobjectisusedbyscriptstoprogrammaticallydeterminethelocationinformationassociatedwiththehostingdevice.Thelocationinformationisacquiredbyapplyingauser-agentspecificalgorithm,creatingaPositionobject,andpopulatingthatobjectwithappropriatedataaccordingly.ObjectsimplementingtheNavigatorinterface(e.g.thewindow.navigatorobject)mustalsoimplementtheNavigatorGeolocationinterface[NAVIGATOR].AninstanceofNavigatorGeolocationwouldbethenobtainedbyusingbinding-specificcastingmethodsonaninstanceofNavigator.ThegetCurrentPosition()methodtakesone,twoorthreearguments.Whencalled,itmustimmediatelyreturnandthenasynchronouslyattempttoobtainthecurrentlocationofthedevice.Iftheattemptissuccessful,thesuccessCallbackmustbeinvoked(i.e.thehandleEventoperationmustbecalledonthecallbackobject)withanewPositionobject,reflectingthecurrentlocationofthedevice.Iftheattemptfails,theerrorCallbackmustbeinvokedwithanewPositionErrorobject,reflectingthereasonforthefailure.TheimplementationofthegetCurrentPositionmethodshouldexecutethefollowingsetofsteps:Runthefollowingpre-processingsteps:IfaPositionOptionsparameterwaspresent,anditsmaximumAgeattributewasdefinedtoanon-negativevalue,assignthisvaluetoaninternalmaximumAgevariable.IfmaximumAgewas-70- definedtoanegativevalueorwasnotspecified,settheinternalmaximumAgevariableto0.IfaPositionOptionsparameterwaspresent,anditstimeoutattributewasdefinedtoanon-negativevalue,assignthisvaluetoaninternaltimeoutvariable.Iftimeoutwasdefinedtoanegativevalue,settheinternaltimeoutvariableto0.Iftimeoutwasnotspecified,settheinternaltimeoutvariabletoInfinity.IfaPositionOptionsparameterwaspresent,anditsenableHighAccuracyattributewasdefined,assignthisvaluetoaninternalenableHighAccuracyvariable.Otherwise,settheinternalenableHighAccuracyvariabletofalse.IfacachedPositionobject,whoseageisnogreaterthanthevalueofthemaximumAgevariable,isavailable,invokethesuccessCallbackwiththecachedPositionobjectasaparameterandexitthissetofsteps.Ifthevalueofthetimeoutvariableis0,invoketheerrorCallback(ifpresent)withanewPositionErrorobjectwhosecodeattributeissettoTIMEOUTandexitthissetofsteps.Startalocationacquisitionoperation(e.g.byinvokingaplatform-specificAPI),possiblytakingintoaccountthevalueoftheenableHighAccuracyvariable(seethedefinitionofenableHighAccuracyfordetails).Startatimerthatwillfireafterthenumberofmillisecondsdenotedbythevalueofthetimeoutvariable.Whenthetimerfires,cancelanyongoinglocationacquisitionoperationsassociatedwiththisinstanceofthesteps,invoketheerrorCallback(ifpresent)withanewPositionErrorobjectwhosecodeattributeissettoTIMEOUT,andexitthissetofsteps.Iftheoperationcompletessuccessfullybeforethetimeoutexpires,cancelthependingtimer,invokethesuccessCallbackwithanewPositionobjectthatreflectstheresultoftheacquisitionoperationandexitthissetofsteps.Iftheoperationfailsbeforethetimeoutexpires,cancelthependingtimerandinvoketheerrorCallback(ifpresent)withanewPositionErrorobjectwhosecodeissettoPOSITION_UNAVAILABLE.ThewatchPosition()methodtakesone,twoorthreearguments.Whencalled,itmustimmediatelyreturnalongvaluethatuniquelyidentifiesawatchoperationandthenasynchronouslystartthewatchoperation.Thisoperationmustfirstattempttoobtainthecurrentlocationofthedevice.Iftheattemptissuccessful,thesuccessCallbackmustbeinvoked(i.e.thehandleEventoperationmustbecalledonthecallbackobject)withanewPositionobject,reflectingthecurrentlocationofthedevice.Iftheattemptfails,theerrorCallbackmustbeinvokedwithanewPositionErrorobject,reflectingthereasonforthefailure.Thewatchoperationthenmustcontinuetomonitorthepositionofthedeviceandinvoketheappropriatecallbackeverytimethispositionchanges.ThewatchoperationmustcontinueuntiltheclearWatchmethodiscalledwiththe-70- correspondingidentifier.Theimplementationofthewatchprocessshouldexecutethefollowingsetofsteps:Runthefollowingpre-processingsteps:IfaPositionOptionsparameterwaspresent,anditsmaximumAgeattributewasdefinedtoanon-negativevalue,assignthisvaluetoaninternalmaximumAgevariable.IfmaximumAgewasdefinedtoanegativevalueorwasnotspecified,settheinternalmaximumAgevariableto0.IfaPositionOptionsparameterwaspresent,anditstimeoutattributewasdefinedtoanon-negativevalue,assignthisvaluetoaninternaltimeoutvariable.Iftimeoutwasdefinedtoanegativevalue,settheinternaltimeoutvariableto0.Iftimeoutwasnotspecified,settheinternaltimeoutvariabletoInfinity.IfaPositionOptionsparameterwaspresent,anditstimeoutattributewasdefinedtoaIfaPositionOptionsparameterwaspresent,anditsenableHighAccuracyattributewasdefined,assignthisvaluetoaninternalenableHighAccuracyvariable.Otherwise,settheinternalenableHighAccuracyvariabletofalse.IfaPositionOptionsparameterwaspresent,anditstimeoutattributewasdefinedtoaIfacachedPositionobject,whoseageisnogreaterthanthevalueofthemaximumAgevariable,isavailable,invokethesuccessCallbackwiththecachedPositionobjectasaparameter.Registertoreceivesystemeventsthatindicatethatthepositionofthedevicemayhavechanged(e.g.bylisteningorpollingforchangesinWiFiorcellularsignals).Startalocationacquisitionoperation(e.g.byinvokingaplatform-specificAPI),possiblytakingintoaccountthevalueoftheenableHighAccuracyvariable(seethedefinitionofenableHighAccuracyfordetails).Runthefollowingacquisitionsteps:Ifthetimerisnotalreadyrunning,startatimerthatwillfireafterthenumberofmillisecondsdenotedbythevalueofthetimeoutvariable.Whenthetimerfires,invoketheerrorCallback(ifpresent)withanewPositionErrorobjectwhosecodeattributeissettoTIMEOUTandjumptostep6.Ifthelocationacquisitionoperationsuccessfullyyieldsanewpositionbeforethetimeoutexpires,performthefollowingtwosteps:Cancelthependingtimer.Notethatthetimermustberestartedoncethisalgorithmjumpsbacktothebeginningoftheacquisitionsteps.Ifthenewpositiondifferssignificantlyfromthepreviousposition,invokethesuccessCallbackwithanewPositionobjectthatreflectstheresultoftheacquisitionoperation.Thisstepmaybesubjecttocallbackratelimitation(seebelow).Else,ifthelocationacquisitionoperationreportsanerrorbeforethetimeoutexpires,invoke-70- theerrorCallback(ifpresent)withanewPositionErrorobjectwhosecodeissettoPOSITION_UNAVAILABLE.Thisstepmaybesubjecttocallbackratelimitation(seebelow).Waitforasystemeventtobereceived.Whensuchaneventisreceivedjumptotheacquisitionstepsabove.Instep5.2.2ofthewatchprocess,thesuccessCallbackisonlyinvokedwhenanewpositionisobtainedandthispositiondifferssignificantlyfromthepreviouslyreportedposition.Thedefinitionofwhatconstitutesasignificantdifferenceislefttotheimplementation.Furthermore,insteps5.2.2and5.2.3,implementationsmayimposelimitationsonthefrequencyofcallbackssoastoavoidinadvertentlyconsumingadisproportionateamountofresources.ForbothgetCurrentPositionandwatchPosition,theimplementationmustneverinvokethesuccessCallbackwithouthavingfirstobtainedpermissionfromtheusertosharelocation.Furthermore,theimplementationshouldalwaysobtaintheuser"spermissiontosharelocationbeforeexecutinganyofthegetCurrentPositionorwatchPositionstepsdescribedabove.Iftheusergrantspermission,theappropriatecallbackmustbeinvokedasdescribedabove.Iftheuserdeniespermission,theerrorCallback(ifpresent)mustbeinvokedwithcodePERMISSION_DENIED,irrespectiveofanyothererrorsencounteredintheabovesteps.ThetimethatisspentobtainingtheuserpermissionmustnotbeincludedintheperiodcoveredbythetimeoutattributeofthePositionOptionsparameter.Thetimeoutattributemustonlyapplytothelocationacquisitionoperation.TheclearWatch()methodtakesoneargument.Whencalled,itmustfirstcheckthevalueofthegivenwatchIdargument.Ifthisvaluedoesnotcorrespondtoanypreviouslystartedwatchprocess,thenthemethodmustreturnimmediatelywithouttakinganyfurtheraction.Otherwise,thewatchprocessidentifiedbythewatchIdargumentmustbeimmediatelystoppedandnofurthercallbacksmustbeinvoked.4.2PositionOptionsinterfaceThegetCurrentPosition()andwatchPosition()methodsacceptPositionOptionsobjectsastheirthirdargument.InECMAScript,PositionOptionsobjectsarerepresentedusingregularnativeobjectswithoptionalpropertiesnamedenableHighAccuracy,timeoutandmaximumAge.[Callback,NoInterfaceObject]interfacePositionOptions{attributebooleanenableHighAccuracy;attributelongtimeout;-70- attributelongmaximumAge;};InECMAScript,theenableHighAccuracy,timeoutandmaximumAgepropertiesarealloptional:whencreatingaPositionOptionsobject,thedevelopermayspecifyanyoftheseproperties.TheenableHighAccuracyattributeprovidesahintthattheapplicationwouldliketoreceivethebestpossibleresults.Thismayresultinslowerresponsetimesorincreasedpowerconsumption.Theusermightalsodenythiscapability,orthedevicemightnotbeabletoprovidemoreaccurateresultsthaniftheflagwasn"tspecified.Theintendedpurposeofthisattributeistoallowapplicationstoinformtheimplementationthattheydonotrequirehighaccuracygeolocationfixesand,therefore,theimplementationcanavoidusinggeolocationprovidersthatconsumeasignificantamountofpower(e.g.GPS).Thisisespeciallyusefulforapplicationsrunningonbattery-powereddevices,suchasmobilephones.IfthePositionOptionsparametertogetCurrentPositionorwatchPositionisomitted,thedefaultvalueusedfortheenableHighAccuracyattributeisfalse.ThesamedefaultvalueisusedinECMAScriptwhentheenableHighAccuracypropertyisomitted.Thetimeoutattributedenotesthemaximumlengthoftime(expressedinmilliseconds)thatisallowedtopassfromthecalltogetCurrentPosition()orwatchPosition()untilthecorrespondingsuccessCallbackisinvoked.IftheimplementationisunabletosuccessfullyacquireanewPositionbeforethegiventimeoutelapses,andnoothererrorshaveoccurredinthisinterval,thenthecorrespondingerrorCallbackmustbeinvokedwithaPositionErrorobjectwhosecodeattributeissettoTIMEOUT.Notethatthetimethatisspentobtainingtheuserpermissionisnotincludedintheperiodcoveredbythetimeoutattribute.Thetimeoutattributeonlyappliestothelocationacquisitionoperation.IfthePositionOptionsparametertogetCurrentPositionorwatchPositionisomitted,thedefaultvalueusedforthetimeoutattributeisInfinity.Ifanegativevalueissupplied,thetimeoutvalueisconsideredtobe0.ThesamedefaultvalueisusedinECMAScriptwhenthetimeoutpropertyisomitted.IncaseofagetCurrentPosition()call,theerrorCallbackwouldbeinvokedatmostonce.IncaseofawatchPosition(),theerrorCallbackcouldbeinvokedrepeatedly:thefirsttimeoutisrelativetothemomentwatchPosition()wascalledorthemomenttheuser"spermissionwasobtained,ifthatwasnecessary.SubsequenttimeoutsarerelativetothemomentwhentheimplementationdeterminesthatthepositionofthehostingdevicehaschangedandanewPositionobjectmustbeacquired.ThemaximumAgeattributeindicatesthattheapplicationiswillingtoacceptacachedpositionwhoseageisnogreaterthanthespecifiedtimeinmilliseconds.IfmaximumAgeissetto0,the-70- implementationmustimmediatelyattempttoacquireanewpositionobject.SettingthemaximumAgetoInfinitymustdeterminetheimplementationtoreturnacachedpositionregardlessofitsage.IfanimplementationdoesnothaveacachedpositionavailablewhoseageisnogreaterthanthespecifiedmaximumAge,thenitmustacquireanewpositionobject.IncaseofawatchPosition(),themaximumAgereferstothefirstpositionobjectreturnedbytheimplementation.IfthePositionOptionsparametertogetCurrentPositionorwatchPositionisomitted,thedefaultvalueusedforthemaximumAgeattributeis0.Ifanegativevalueissupplied,themaximumAgevalueisconsideredtobe0.ThesamedefaultvalueisusedinECMAScriptwhenthemaximumAgepropertyisomitted.4.3PositioninterfaceThePositioninterfaceisthecontainerforthegeolocationinformationreturnedbythisAPI.ThisversionofthespecificationallowsoneattributeoftypeCoordinatesandatimestamp.FutureversionsoftheAPImayallowadditionalattributesthatprovideotherinformationaboutthisposition(e.g.streetaddresses).[NoInterfaceObject]interfacePosition{readonlyattributeCoordinatescoords;readonlyattributeDOMTimeStamptimestamp;};Thecoordsattributecontainsasetofgeographiccoordinatestogetherwiththeirassociatedaccuracy,aswellasasetofotheroptionalattributessuchasaltitudeandspeed.ThetimestampattributerepresentsthetimewhenthePositionobjectwasacquiredandisrepresentedasaDOMTimeStamp[DOMTIMESTAMP].4.4Coordinatesinterface[NoInterfaceObject]interfaceCoordinates{readonlyattributedoublelatitude;readonlyattributedoublelongitude;readonlyattributedouble?altitude;readonlyattributedoubleaccuracy;readonlyattributedouble?altitudeAccuracy;readonlyattributedouble?heading;-70- readonlyattributedouble?speed;};ThegeographiccoordinatereferencesystemusedbytheattributesinthisinterfaceistheWorldGeodeticSystem(2d)[WGS84].Nootherreferencesystemissupported.Thelatitudeandlongitudeattributesaregeographiccoordinatesspecifiedindecimaldegrees.Thealtitudeattributedenotestheheightoftheposition,specifiedinmetersabovethe[WGS84]ellipsoid.Iftheimplementationcannotprovidealtitudeinformation,thevalueofthisattributemustbenull.Theaccuracyattributedenotestheaccuracylevelofthelatitudeandlongitudecoordinates.Itisspecifiedinmetersandmustbesupportedbyallimplementations.Thevalueoftheaccuracyattributemustbeanon-negativerealnumber.ThealtitudeAccuracyattributeisspecifiedinmeters.Iftheimplementationcannotprovidealtitudeinformation,thevalueofthisattributemustbenull.Otherwise,thevalueofthealtitudeAccuracyattributemustbeanon-negativerealnumber.TheaccuracyandaltitudeAccuracyvaluesreturnedbyanimplementationshouldcorrespondtoa95%confidencelevel.Theheadingattributedenotesthedirectionoftravelofthehostingdeviceandisspecifiedindegrees,where0°≤heading<360°,countingclockwiserelativetothetruenorth.Iftheimplementationcannotprovideheadinginformation,thevalueofthisattributemustbenull.Ifthehostingdeviceisstationary(i.e.thevalueofthespeedattributeis0),thenthevalueoftheheadingattributemustbeNaN.Thespeedattributedenotesthemagnitudeofthehorizontalcomponentofthehostingdevice"scurrentvelocityandisspecifiedinmeterspersecond.Iftheimplementationcannotprovidespeedinformation,thevalueofthisattributemustbenull.Otherwise,thevalueofthespeedattributemustbeanon-negativerealnumber.4.5PositionErrorinterface[NoInterfaceObject]interfacePositionError{constunsignedshortPERMISSION_DENIED=1;constunsignedshortPOSITION_UNAVAILABLE=2;constunsignedshortTIMEOUT=3;readonlyattributeunsignedshortcode;-70- readonlyattributeDOMStringmessage;};Thecodeattributemustreturntheappropriatecodefromthefollowinglist:PERMISSION_DENIED(numericvalue1)ThelocationacquisitionprocessfailedbecausethedocumentdoesnothavepermissiontousetheGeolocationAPI.POSITION_UNAVAILABLE(numericvalue2)Thepositionofthedevicecouldnotbedetermined.Forinstance,oneormoreofthelocationprovidersusedinthelocationacquisitionprocessreportedaninternalerrorthatcausedtheprocesstofailentirely.TIMEOUT(numericvalue3)ThelengthoftimespecifiedbythetimeoutpropertyhaselapsedbeforetheimplementationcouldsuccessfullyacquireanewPositionobject.Themessageattributemustreturnanerrormessagedescribingthedetailsoftheerrorencountered.Thisattributeisprimarilyintendedfordebugginganddevelopersshouldnotuseitdirectlyintheirapplicationuserinterface.-70- 三、英文翻译:地理位置API规范该规范定义了一个提供脚本访问地理定位信息与主机设备相关的API。1.简介地理定位API定义了一个高层次的接口,只与设备托管的实施,如经纬度位置信息。API本身是不可知的相关位置信息源。位置信息的常见来源包括全球定位系统(GPS)和位置推断,从网络的信号,如IP地址,RFID,WiFi和蓝牙的MAC地址,和GSM/CDMA的小区ID,以及用户输入。不保证该API返回设备的实际位置。API的设计。使两个“一次性”的位置要求和重复位置更新,以及能够明确查询缓存的位置。为代表的纬度和经度坐标的位置信息。在本规范是建立在早期的工作在同行业中,包括地理位置APIAZALOC],[GEARSLOC],[LOCATIONAWARE]。2.适用范围本规范仅限提供一个API脚本检索相关的托管设备的地理位置信息。地理位置信息提供全球坐标系统[WGS84]。本规范的范围不包括提供任何形式的一种标记语言。本规范的范围不包括定义新的URI计划建设的URI标识地理位置。3.安全和隐私的考虑在本规范中定义的API,用于检索托管设备的地理位置。几乎在所有的情况下,该信息也公开了该设备的用户的位置,从而有可能损害用户的隐私。一个符合执行本规范外,必须提供一种机制,保护用户的隐私,而这个机制应确保没有位置信息未经用户明确许可通过这个API提供。3.1隐私考虑地理位置API实施者用户代理不得发送位置信息网站没有用户的明确许可。用户代理必须获得一个用户接口,允许通过,除非它们已预先安排的信任与用户的关系,如下所述:用户界面必须包括文档的URI[URI]的主机部分。这些收购的权限,通过用户界面和保存超出当前浏览会话(即超越的时候,浏览器上下文BROWSINGCONTEXT]导航到另一个URL)必须遵守和用户代理必须尊重撤销权限。某些用户代理将预先安排的信任关系,不需要这样的用户界面。例如,当Web浏览器将显示用户界面时,Web站点进行地理定位请求,VOIP电话可能不存在任何用户界面时,使用位置信息来执行E911功能。-70- 3.2隐私考虑受助人的位置信息收件人只能请求位置时的必备资料。收件人必须只使用的位置,它被提供给他们的任务的信息。收件人必须出售一旦该任务完成后,除非明确允许保留用户的位置信息。收件人也必须采取措施,保护这些信息,防止未经授权的访问。如果位置信息存储,应该允许用户更新和删除此信息。位置信息的接收者必须重传的位置信息,而无需用户的明确许可。护理时,应采取重传和鼓励使用加密。收件人必须明确,清楚地披露事实,他们正在收集位置数据的收集,数据保留多久,数据是如何安全,数据是共享的,如果它是共享的,用户如何访问,更新和删除的数据,以及任何其他的选择,用户有关的数据。此披露必须包括任何例外上面列出的指导原则的解释。3.3其他实施考虑继前一节中列出的要求,地理位置API的实施者也被告知可能负面影响其用户的隐私,请考虑以下几个方面:在某些情况下,用户可能在不经意间授予权限给用户代理透露他们的位置到网站。在其他情况下,在这样一种方式,在先前授予的位置权限不再适用,只要对用户来讲目标URL变化,承载的内容。或者用户可能会简单地改变他们的想法。预测或预防这些情况,本质上是困难的。缓解和深入的防御措施是执行责任,而不是由本规范规定。然而,在设计这些措施,实施者应位置共享,使用户意识,并提供方便的接口,使撤销权限。4.API说明4.1地理位置接口Geolocation对象所使用的脚本以编程方式确定相关的位置信息与主机设备。获取位置信息应用的用户代理的具体算法,创建一个位置对象,并用合适的数据填充该对象。实施“导航”界面(例如的window.navigator对象)的对象还必须实现的NavigatorGeolocation接口[导航]。一个实例,然后将获得的NavigatorGeolocation使用绑定特定铸造方法的一个实例导航。getCurrentPosition()方法需要一个,两个或三个参数。当被调用时,它必须立即返回,然后以异步方式尝试取得当前的位置的移动设备。如果尝试成功,的successCallback必须被调用(即,必须调用的回调对象的handleEvent操作)与一个新的位置对象,反映设备的当前位置。如果尝试失败,必须调用errorCallback一个新的PositionError对象,反映了失败的原因。实施的getCurrentPosition方法应该执行下面的一组步骤:运行以下预处理步骤:如果一个PositionOptions参数是本其maximumAge属性被定义为一个非负的值,将该值赋给内部maximumAge变量。如果maximumAge被定义为负值时,或没有被指定,设置内部maximumAge变量为0。-70- 如果一个PositionOptions参数是存在的,其超时属性被定义为一个非负的值,将该值赋给内部超时变量。如果超时被定义为负值,内部超时变量设置为0。如果不指定超时,设置内部超时变量无穷。如果一个PositionOptions参数礼物,并且被定义其enableHighAccuracy属性,将该值赋给内部enableHighAccuracy变量。否则,设置的内部enableHighAccuracy变量设置为false。如果高速缓存的位置的对象,其年龄不大于价值的maximumAge变量是可用的,调用successCallback的缓存位置对象作为参数,并退出该组步骤。如果超时的变量的值是0,则调用的errorCallback(如果存在)的代码属性被设置为超时和退出当前组步骤用新PositionError的对象。开始位置获取操作(例如,通过调用特定于平台的API),可能考虑到的的enableHighAccuracy变量的值(有关详细信息,请参阅定义enableHighAccuracy)。启动一个定时器的超时变量的值表示的毫秒数后,将火。当定时器触发,取消正在进行的任何位置获取与此实例相关联的操作步骤,调用errorCallback的(如果存在)代码属性设置超时一个新的PositionError的对象,并退出这一套步骤。在超时到期前,如果操作成功完成,取消挂起的计时器,调用successCallback一个新的位置对象,反映收购操作的结果,并退出这一套步骤。如果操作失败,超时到期前,取消挂起的计时器,并调用一个新的PositionError的对象,其代码设置POSITION_UNAVAILABLE的errorCallback(如果存在)。watchPosition()方法需要一个,两个或三个参数。在调用时,必须立即返回一个long值唯一标识表操作,然后异步启动手表操作。此操作必须首先尝试该设备取得当前的位置。如果尝试成功,的successCallback必须被调用(即,必须调用的回调对象的handleEvent操作)与一个新的位置对象,反映设备的当前位置。如果尝试失败,必须调用errorCallback一个新的PositionError对象,反映了失败的原因。表操作,然后必须继续监控设备的位置,并调用相应的回调,每次这个位置的变化。手表操作必须继续,直到clearWatch方法被调用的相应标识符。制表工艺的实施,应执行以下步骤:运行以下预处理步骤:如果一个PositionOptions参数是本其maximumAge属性被定义为一个非负的值,将该值赋给内部maximumAge变量。如果maximumAge被定义为负值时,或没有被指定,设置内部maximumAge变量为0。如果一个PositionOptions参数是存在的,其超时属性被定义为一个非负的值,将该值赋给内部超时变量。如果超时被定义为负值,内部超时变量设置为0。如果不指定超时,设置内部超时变量无穷。如果一个PositionOptions参数礼物,并且被定义其enableHighAccuracy属性,将该值赋给内部enableHighAccuracy变量。否则,设置的内部enableHighAccuracy变量设置为false。如果高速缓存的位置的对象,其年龄不大于价值的maximumAge变量,是可用的,调用successCallback的对象作为参数缓存的位置。注册接收系统事件,表明可能已经改变设备的位置(如WiFi或蜂窝信号的变化通过监听或轮询)。开始位置获取操作(例如,通过调用特定于平台的API),可能考虑到的的enableHighAccuracy变量的值(有关详细信息,请参阅定义enableHighAccuracy)。运行下面的收购步骤:-70- 如果计时器尚未运行,启动一个定时器的超时变量的值表示的毫秒数后,将火。当定时器触发,调用(如果存在)errorCallback一个新的PositionError的对象的代码属性设置为超时,并跳转到步骤6。如果该位置采集操作成功产生一个新的位置,在超时到期前,执行以下两个步骤:取消挂起的计时器。需要注意的是,必须重新启动定时器,该算法一次跳回到采集步骤的开始。如果新的位置从先前的位置显着不同,调用successCallback的一个新的位置对象,它反映收购操作的结果。这一步可能会受到回调幅度限制(见下文)。否则,如果在超时到期前的位置采集操作报告错误,调用一个新的PositionError的对象,其代码设置POSITION_UNAVAILABLE的errorCallback(如果存在)。这一步可能会受到回调幅度限制(见下文)。等待要接收的系统事件。当这样的事件被跳转到收购上述步骤。在制表工艺的步骤5.2.2,successCallback只调用获得一个新的位置时,这个位置从先前报告的位置显着不同。留待实现的定义是什么构成了显着的差异。此外,在5.2.2和5.2.3步骤,实现可能限制回调的频率上,以免无意中消耗过多的资源。实施对于两个getCurrentPositionwatchPosition必须永远调用successCallback,从用户到共享位置,而无需先获得许可。此外,实施应始终得到用户的权限,共享位置,然后再执行任何上述步骤getCurrentPosition或watchPosition的。如果用户授予许可,必须调用相应的回调函数,如上所述。如果用户拒绝许可,errorCallback(如果存在),必须调用代码PERMISSION_DENIED,不论在上述步骤中所遇到的任何其他错误。timeout属性的PositionOptions参数涵盖的期间不包括在获得用户许可的时间都花在必须。timeout属性仅适用于收购的位置操作。clearWatch()方法需要一个参数。在调用时,必须先检查的给予watchId的参数值。如果这个值不对应任何先前启动的守护进程,那么该方法必须立即返回,不采取任何进一步的行动。否则,钟表工艺的确定由watchId参数必须立即停止,并没有进一步的回调,必须调用。4.2PositionOptions接口getCurrentPosition()和watchPosition()方法接受PositionOptions的对象,作为他们的第三个参数。在ECMAScript,PositionOptions对象使用常规的本地对象名为enableHighAccuracy,超时和maximumAge的可选属性表示。[Callback,NoInterfaceObject]interfacePositionOptions{attributebooleanenableHighAccuracy;attributelongtimeout;attributelongmaximumAge;};在ECMAScript,enableHighAccuracy,超时和maximumAge的的性能是所有可选:创建一个PositionOptions对象时,开发商可以指定任何这些属性。-70- enableHighAccuracy属性提供了一个暗示,应用程序想获得最好的结果。这可能会导致较慢的响应时间,或功率消耗增加。用户也可能拒绝这种能力,或设备可能无法提供更准确的结果,如果标志没有指定。这个属性的预期目的是让应用程序通知执行,他们不要求精度高的地理位置修复,因此,实现能够避免使用消耗功率(如GPS)的一个显着量的地理位置提供商。这是特别有用的电池供电的设备,如移动电话上运行的应用程序。如果被省略,的PositionOptions的参数getCurrentPosition或watchPosition用于的enableHighAccuracy属性的默认值是假的。在ECMAScript中使用相同的默认值时enableHighAccuracy属性被省略。timeout属性表示时间(以毫秒为单位),可以通过从通话getCurrentPosition()或watchPosition()的调用,直到相应的successCallback的最大长度。如果实现给定的超时期满前未能成功收购一个新的位置,并没有其他的错误发生在这个区间,那么相应errorCallback必须被调用对象的代码属性设置超时一个PositionError的。注意:获得用户许可所花费的时间不包括在此期间所涵盖的timeout属性。timeout属性仅适用于收购的位置操作。如果被省略,的PositionOptions的参数getCurrentPosition或watchPositiontimeout属性用于默认值是无穷大。如果有一个负的值被提供时,超时值被认为是0。相同的默认值是用来在ECMAScript当超时属性被省略。在一个getCurrentPosition()调用的情况下,errorCallback将调用最多一次。的watchPosition()的情况下,可以重复调用errorCallback:第一个超时是相对的时刻watchPosition()被调用或瞬间,得到用户的许可,如果是必要的。其后超时相对的那一刻,当执行确定托管设备的位置已经改变,必须获得一个新的位置对象。maximumAge属性表明应用程序是愿意接受一个缓存的位置,其年龄不超过指定的时间以毫秒为单位。如果maximumAge设置为0,实施必须立即尝试获得一个新的位置对象。设置无限maximumAge必须确定实现返回一个缓存的位置,不论其年龄。如果执行不具有可缓存的位置,其年龄不超过指定的maximumAge,那么它必须获得一个新的位置对象。在一个watchPosition()的情况下,maximumAge是指由执行返回到第一位置的对象。如果参数的getCurrentPosition或watchPosition的PositionOptions被删去,用于的maximumAge属性的缺省值是0。如果有一个负的值被提供,的maximumAge值被认为是0。在ECMAScript中使用相同的默认值时maximumAge属性被省略。4.3位置接口位置界面是通过这个API返回的地理位置信息的容器。这个版本的规范允许一个属性类型坐标和时间戳。未来版本的API可以允许额外的属性,提供这个位置上的其他信息(如街道地址)。[NoInterfaceObject]interfacePosition{readonlyattributeCoordinatescoords;readonlyattributeDOMTimeStamptimestamp;};其COORDS属性中包含的一组地理坐标一起与他们相关联的精度,以及其它任选的一组属性,如高度和速度的时间戳属性表示时间仓对象时,代表作为一个DOMTimeStamp[DOMTIMESTAMP]。-70- 4.4坐标界面[NoInterfaceObject]interfaceCoordinates{readonlyattributedoublelatitude;readonlyattributedoublelongitude;readonlyattributedouble?altitude;readonlyattributedoubleaccuracy;readonlyattributedouble?altitudeAccuracy;readonlyattributedouble?heading;readonlyattributedouble?speed;};使用这个接口中的属性的地理坐标参考系统是世界大地测量系统(2D)[WGS84]。没有其他的参考系统的支持。经度和纬度属性指定十进制度的地理坐标。海拔属性表示指定的位置,[WGS84椭球米以上的高度。如果执行不能提供高度信息,这个属性的值必须为空。的准确性的属性表示的经度和纬度坐标的精度水平。它被指定米,必须支持所有的实现。的准确性的属性的值必须是一个非负实数米的altitudeAccuracy属性中指定。如果执行不能提供高度信息,这个属性的值必须为空。否则,该值的altitudeAccuracy属性必须是一个非负实数。准确性和altitudeAccuracy实施返回值应该对应于95%的置信水平。标题属性表示的方向旅行托管设备和指定度,其中0°≤标题<360°,顺时针方向计数相对正北。如果实现不能提供信息的标题,这个属性的值必须为空。如果主机装置是静止的(即属性为0的速度的值),则标题的属性的值必须为NaN。速度属性表示主机设备的当前速度的水平分量的幅度,并指定为米每秒。如果执行不能提供速度信息,这个属性的值必须为空。否则,速度属性的值必须是一个非负实数。4.5PositionError接口[NoInterfaceObject]interfacePositionError{constunsignedshortPERMISSION_DENIED=1;constunsignedshortPOSITION_UNAVAILABLE=2;constunsignedshortTIMEOUT=3;readonlyattributeunsignedshortcode;readonlyattributeDOMStringmessage;-70- };代码属性必须从以下列表中返回相应的代码:PERMISSION_DENIED(数值1)位置采集过程中失败,因为文件没有权限使用地理位置API。POSITION_UNAVAILABLE(数值2)无法确定设备的位置。例如,有报告的位置的采集过程中使用的一个或多个位置提供一个内部错误导致完全失败的过程。TIMEOUT(数值三)超时属性所指定的时间长度已经过去了,再实施成功获得一个新的位置对象。消息属性必须返回一个错误消息,描述遇到的错误的细节。这个属性主要用于调试和开发人员不应该在他们的应用程序的用户界面中直接使用它。-70-