HTML 5中地理位置api小结

  HTML 5提供了地理位置等一系列API可以给用户使用,方便用户制作LBS的地理应用,首先在支持HTML 5的浏览器中,当开启API时,会询问是否用户同意使用api,否则不会开启的,保证安全。


1) 开启,判断是否浏览器支持LBS api

Java代码  收藏代码
  1. function isGeolocationAPIAvailable()  
  2. {  
  3.   
  4.   var location = "No, Geolocation is not supported by this browser." ;   
  5.   if  (window.navigator.geolocation) {  
  6.     location = "Yes, Geolocation is supported by this browser." ;  
  7.   }  
  8.   alert(location);  
  9. }  


   上面的例子中,还在displayError方法中,捕捉了异常;

2 获得用户的地理位置:

    这个使用getCurrentPosition就可以了;

Java代码  收藏代码
  1. function requestPosition() {  
  2. if  (nav ==  null ) {  
  3. nav = window.navigator;  
  4. }  
  5. if  (nav !=  null ) {  
  6. var geoloc = nav.geolocation;  
  7. if  (geoloc !=  null ) {  
  8. geoloc.getCurrentPosition(successCallback);  
  9. }  
  10. else  {  
  11. alert("Geolocation API is not supported in your browser" );  
  12. }  
  13. }  
  14. else  {  
  15. alert("Navigator is not found" );  
  16. }  
  17. }  


   当获得地理位置成功后,会产生一个回调方法了,处理返回的结果,

  
Java代码  收藏代码
  1. function setLocation(val, e) {    
  2.   document.getElementById(e).value = val;  
  3. }   
  4.     
  5. function successCallback(position)  
  6. {   
  7.   setLocation(position.coords.latitude, "latitude" );   setLocation(position.coords.longitude,  "longitude" );  
  8. }  



 



3)
一个很常见的问题,是如何跟踪用户不断变化的地理位置,这里小结下其中用到的两个api。

1 watchPosition

   例子如下:

 
Java代码  收藏代码
  1.        
  2. function listenForPositionUpdates() {  
  3.     if  (nav ==  null ) {  
  4.         nav = window.navigator;  
  5.     }  
  6.     if  (nav !=  null ) {  
  7.         var geoloc = nav.geolocation;  
  8.         if  (geoloc !=  null ) {  
  9.             watchID = geoloc.watchPosition(successCallback);  
  10.         } else  {  
  11.             alert("Geolocation API is not supported in your browser" );  
  12.         }  
  13.     } else  {  
  14.         alert("Navigator is not found" );  
  15.     }  
  16. }  


   然后在successCallback中,就可以设置显示最新的地理位置:

 
Java代码  收藏代码
  1. function successCallback(position){   
  2.   setText(position.coords.latitude, "latitude" );   setText(position.coords.longitude,  "longitude" );  
  3. }  


   如果不希望实时跟踪,则可以取消之:

  function clearWatch(watchID) { 
  window.navigator.geolocation.clearWatch(watchID);

}

4) 如何处理异常:
    当遇到异常时,可以捕捉之:

 
Java代码  收藏代码
  1. if  (geoloc !=  null ) {     
  2.    geoloc.getCurrentPosition(successCallback, errorCallback);    
  3.     }  
  4.   
  5. function errorCallback(error) {  
  6.     var message = "" ;  
  7.     switch  (error.code) {  
  8.     case  error.PERMISSION_DENIED:  
  9.         message = "This website does not have permission to use "   
  10.                 + "the Geolocation API" ;  
  11.         break ;  
  12.     case  error.POSITION_UNAVAILABLE:  
  13.         message = "The current position could not be determined." ;  
  14.         break ;  
  15.     case  error.PERMISSION_DENIED_TIMEOUT:  
  16.         message = "The current position could not be determined "   
  17.                 + "within the specified timeout period." ;  
  18.         break ;  
  19.     }  
  20.     if  (message ==  "" ) {  
  21.         var strErrorCode = error.code.toString();  
  22.         message = "The position could not be determined due to "   
  23.                 + "an unknown error (Code: "  + strErrorCode +  ")." ;  
  24.     }  
  25.     alert(message);  
  26. }  


  
5) 在google 地图上显示位置(前提是有google map api等设置好)

  
Java代码  收藏代码
  1. function getCurrentLocation()  
  2.   {  
  3.   if  (navigator.geolocation)  
  4.     {  
  5.     navigator.geolocation.getCurrentPosition(showMyPosition,showError);  
  6.     }  
  7.   else   
  8.    {  
  9.     alert("No, Geolocation API is not supported by this browser." );  
  10.     }  
  11.  }  
  12.   
  13.   function showMyPosition(position)  
  14. {  
  15. var coordinates=position.coords.latitude+"," +position.coords.longitude;  
  16. var map_url="http://maps.googleapis.com/maps/api/staticmap?center="   
  17. +coordinates+"&zoom=14&size=300x300&sensor=false" ;  
  18. document.getElementById("googlemap" ).innerHTML= "<img src='" +map_url+ "' />" ;  
  19. }  
  20.   
  21.  function showError(error)  
  22.  {  
  23.   switch (error.code)  
  24.   {  
  25.   case  error.PERMISSION_DENIED:  
  26.   alert("This website does not have permission to use the Geolocation API" )  
  27.   break ;  
  28.   
  29.   case  error.POSITION_UNAVAILABLE:  
  30.   alert("The current position could not be determined." )  
  31.   break ;  
  32.   
  33.   case  error.TIMEOUT:  
  34.   alert("The current position could not be determined within the specified time  out period." )  
  35.   break ;  
  36.   
  37.   case  error.UNKNOWN_ERROR:  
  38.   alert("The position could not be determined due to an unknown error." )  
  39.   break ;  
  40.   }  
  41.  } 
3、基于视觉的智能分拣机:原理、算法与应用 本文介绍了一种基于视觉的智能分拣系统,利用树莓派、相机模块和多种检测算法实现低成本、高精度的物体分拣。系统支持颜色、形状和尺寸三种检测方式,准确率达99%,广泛适用于制造业、农业和物流等领域。文章详细阐述了各检测算法原理、测试结果及系统优化方向,并探讨了其实际应用案例与未来发展前景。 阅读详情

相关推荐

VMware共享磁盘配置实战:从零搭建多机共享存储环境

本文详细介绍了在VMware环境中从零开始配置共享磁盘的完整实战流程。通过创建共享磁盘、挂载至多台虚拟机并修改.vmx配置文件等关键步骤,帮助用户搭建可用于数据库集群(如Oracle RAC)测试的多机共享存储环境,并提供了核心参数设置与常见问题排查指南。

weixin_29284201的博客 492

小强的HTML5移动开发之路(18)——HTML5地理定位

在前面的《小强的HTML5移动开发之路(2)——HTML5的新特性》中介绍了关于HTML5的地理定位功能,这一篇我们来详细了解一下怎么使用该功能。 HTML5 Geolocation API用于获得用户的地理位置。 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的,在使用该功能的时候浏览器会弹出提醒框。 一、地理定位的几种方式 IP地址、GPS、Wifi、GSM/...

xidajiancun 293

清华电子系保研面试全记录:五轮硬核考核+工程硕博专项解析(附真题)

本文详细解析了清华大学电子工程系保研面试的完整流程,重点剖析了其标志性的五轮专业面试(涵盖电路、电磁场、信号系统、计算机与AI)和综合组群面,并深入解读了工程硕博改革专项的考核要点与备战策略。文章提供了各专业组的真题示例与应对方法,旨在帮助电子信息相关专业学子系统准备,从容应对这场高强度的知识与综合素质挑战。

u0v1w2x3的博客 588

H5系列之地理位置(必知必会)

H5之地理位置必知必会 【02】概念 规范地址:http://www.w3.org/TR/geolocation-API/ HTML5 Geolocation(地理定位)用于定位用户的位置。 定位用户的位置HTML5 Geolocation API 用于获得用户的地理位置。鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的...

weixin_30600503的博客 506

【网络图】:附Origin详细画图教程

网络图,是一种由节点(或顶点)和连接这些节点的边(或链路)组成的图形结构。在网络图中,节点通常代表系统中的一个实体(如项目中的一项任务、通信网络中的一个设备、或运输网络中的一个站点),而边则代表这些实体之间的直接联系或流动(如任务的先后顺序、数据的传输路径、或乘客的旅行路线)。 有向图:如果边具有方向性,即从一个节点指向另一个节点,则称为有向图。这种图常用于表示具有明确先后顺序或方向性的系统,如项目管理中的任务依赖关系。 无向图:如果图中的边没有方向,则称为无向图。它适用于表示实体间相互关联但无明确方向性的

weixin_50236590的博客 3956

unity pc运行包导入glb

本文介绍了在Unity中实现GLB/GLTF模型动态导入的方法。主要使用glTFast插件进行模型导入,配合StandaloneFileBrowser实现文件选择功能。文章提供了详细的插件安装方式(包括国内镜像源),并给出了核心导入脚本代码。脚本实现了模型加载、父对象设置、材质修复等功能,解决了常见的材质显示异常问题。该方法支持编辑器和PC平台,兼容不同版本的glTFastAPI,通过简易UI操作即可完成模型导入,适合需要运行时加载3D模型的Unity项目开发。

懒懒的蓝的博客 545

React Native Geolocation错误处理与调试:PositionError异常解决方案

React Native Geolocation是一款强大的地理定位API库,为React Native应用提供精准的位置服务。在开发过程中,PositionError异常是常见的技术挑战,本文将全面解析这些错误类型、提供实用的调试方法和解决方案,帮助开发者快速定位并解决问题。 ## 一、深入理解PositionError错误类型 PositionError类定义在[android/src/m

gitblog_00465的博客 422

Veritas NetBackup 10.1 Windows安装指南:从账户配置到完整部署

本文详细介绍了Veritas NetBackup 10.1在Windows系统上的完整安装流程,从账户配置到部署验证。重点讲解了创建专用服务账户、安装组件选择、许可证输入等关键步骤,并提供了常见问题排查和进阶配置建议,帮助用户顺利完成企业级备份解决方案的部署。

weixin_26765287的博客 454

HTML5中的地理定位API(Geolocation)

地理定位是HTML5中新增的API特性,它允许JavaScript程序向浏览器询问用户真实的地理位置。识别地理位置的一些应用就可以使用它来显示地图、导航和其它一些与用户当前位置有关的信息。当然,考虑到用户的隐私,支持地理定位API的浏览器在JavaScript程序获取用户物理位置前总是会询问用户是否允许获取当前位置。 navigator.geolocation 支持地理位置API的浏览器会定义 navigator.geolocation属性,用于获取用户的位置信息。此属性拥有以下方法: navigat

feelinghappy的专栏 1620

21、时间触发以太网:通信、诊断、故障隔离与参数化详解

本文详细解析了时间触发以太网(TTEthernet)的核心机制,包括团检测算法、诊断服务、故障隔离策略、配置服务以及协议参数化等内容。TTEthernet是一种专为超高可靠性系统设计的网络技术,广泛应用于航空航天、工业自动化和汽车电子等领域。文章还探讨了其未来发展趋势,如技术创新与生态建设,为开发者、企业和研究机构提供了应用与发展的方向。

efc12345678的博客 110

华为OD机试双机位C卷-分披萨 (Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【分披萨】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od机试 - 分披萨。

qq_45776114的博客 1397

HTML5新API介绍(小结)

<br />HTML5新API介绍 <br />1:canvas,不用多说,可以画出很多绚丽的图形,甚至可以直接做出伪3D游戏。<br />2:媒体控制,也很好理解(直译就是回放功能,假如只用html5.0以下的标签写,以前的音乐播放是不可能实现滚动条的。)<br />3:离线网页程序,可以把资源文件完全缓存在客户端,并且通过js的一些方法清空缓存<br />4:文档编辑,应该是更好的支持对文档的编辑。<br />5:拖动,可以将文件拖动到某些区域上传<br />6:跨文档请求,websocket,一种更加

4173

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HTML5实战

《HTML5实战》基本信息原书名:HTML5 Solutions:Essential Techniques for HTML5 Developers作者: (意)Marco Casario (比)Peter Elst (法)Charles Brown (印度)Nathalie Wormser (比)Cyril Hanquez [作译者介绍]译者: 乔晶峰 孙爱红丛书名: 图灵程序设计丛书出版社:人...

weixin_34354173的博客 441

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

html5小结

今天对html5大致的进行了一下小结 现Firefox,chrome,opera,safari(版本四以上)IE9已支持html5,html5相对于html4在声明和标签上面做了简化,也对兼容做了详细的规定,废除了部分元素,增加了部分元素。在html5中新添加的标签可以很形象的表示标签所表示的内容,我们不用在重复利用div,之前我们页眉页脚都添加div,然后给div...

weixin_34301307的博客 83

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

总结html5,Html5的新特性总结

新加语义化标签:HTML5其实是关于图像,位置,存储,速度的优化和改进图像:到目前为止,基本上想要直接在网页上进行绘图还是不能轻易完成的,即使是几何图形也不可以。在浏览器当中直接能跟图片的交互操作也很有限,多数是保存和点击。如果希望能够跟图片进行更多的操作或者在浏览器当中画出图形,就需要flash, silverlight 这类插件来帮忙。HTML5了解人们的需求,HTML5已经确定引入canva...

weixin_30396777的博客 177

HTML 5 CSS 3网页设计经典范例 (李俊民,黄盛奎) 随书光盘​

《html5+css3网页设计经典范例(附cd光盘1张)》共分为18章,涵盖了html5和css3中各方面的技术知识。主要内容包括html5概述、html5与html4的区别、html5...

qq_45670012的博客 228

Html5的新特性总结

新加语义化标签: HTML5其实是关于图像,位置,存储,速度的优化和改进 图像:   到目前为止,基本上想要直接在网页上进行绘图还是不能轻易完成的,即使是几何图形也不可以。在浏览器当中直接能跟图片的交互操作也很有限,多数是保存和点击。如果希望能够跟图片进行更多的操作或者在浏览器当中画出图形,就需要flash, silverlight 这类插件来帮忙。 HTML5了解人们的需求,HTML5已经确定...

双眸 302

H5 特性浅析小结

HTML5是万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改,为了顺应整个互联网时代变迁,使得人们能够以更好的方式去进行网页结构搭建,HTML5应运而生。为了更好地处理今天的互联网应用,HTML5添加了很多新元素及功能,比如: 图形的绘制,多媒体内容,更好的页面结构,更好的形式 处理,和几个api拖放元素,定位,包括网页 应用程序缓存,存储,网络工...

219

《HTML 5网页开发实例详解》目录

第一篇  从宏观上认识HTML 5 讲述了HTML 5引发的Web革命、HTML 5的整体特性、HTML 5相关概念和框架和开发环境搭建。 第1章 HTML 5引发的Web革命 1.1  你是不是真的了解HTML 5 1.1.1  通过W3C认识HTML 5的发展史 1.1.2  HTML 5、HTML4、XHTML的区别 1.1.3  什么人应该学HTML 5 1.1.4  一个图

夏天又到了的专栏 2799

html5 app项目实例,html 5开发精要与实例详解_html5网页开发实例详解_哪些app是html5开发的...

图书简介:这是一本以综合性案例为导向并辅之以精要知识点讲解的html5实战教程。内容分为两大部分:第一部分通过一系列中大型案例全方位对html5的各个重要知识点进行了详细的讲解,每个案例包含案例概述、页面效果展示、案例所涉及主要知识点(精要)、源代码剖析4个部分,读者既能根据书中的步骤动手实践,又能重点学习案例中用到的核心理论知识,同时还能领会源代码的设计思路和方法;第二部分讲解了jwebsock...

weixin_31965935的博客 242

html5入门到精通 在线,HTML5从入门到精通(第2版)

如果您是一位有前瞻性的Web前端工作者,那么您一定会从本书中受益,因为它就是专门为您打造的。《html5从入门到精通(第2版)》一书内容系统而全面,详尽地讲解了HTML语言及HTML5的所有新功能与新特性,技术新颖,所有重要知识点均以多个实例进行讲解,方便读者动手实践。每章最后设置习题,通过这些习题可以对本章学到的知识进行巩固。本书不仅能满足您全面而系统地学习理论知识的要求,还能满足您充分实践的需...

weixin_39783156的博客 199
上一篇: 关于Felix Log Service
下一篇: MySQL中Utf8_general_ci 和 utf8_unicode_ci的区别
Snoopy7713
博客等级 码龄21年 17粉丝 681原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值