`
snoopy7713
  • 浏览: 1148814 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

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.  } 
分享到:
评论

相关推荐

    html5中地理位置定位api接口开发应用小结

    地理位置定位的几种方式:IP地址,GPS,Wifi,GSM/CDMA 地理位置获取流程: 1、用户打开需要获取地理位置的web应用。 2、应用向浏览器请求地理位置,浏览器弹出询问,询问用户是否共享地理位置。 3、假设用户允许,...

    HTML5高级程序设计

    从第2 章起,分别围绕构建令人神往的富web 应用,逐一讨论了html5 的canvas、geolocation 、communication、websocket、forms、web workers、storage 等api 的使用, 辅以直观明了的客户端和服务器端示例代码,让...

    完整版《HTML5高级程序设计》5

    由于上传文件大小限制,只能分为5部分上传,其余部分请在我的资源中找到,下载后共同解压 内容简介  今天,大多数现代浏览器都已经支持HTML5。学习体验HTML5带给Web开发的便捷、快速和强大功能,是每一位Web设计和...

    完整版《HTML5高级程序设计》2

    由于上传文件大小限制,只能分为5部分上传,其余部分请在我的资源中找到,下载后共同解压 内容简介  今天,大多数现代浏览器都已经支持HTML5。学习体验HTML5带给Web开发的便捷、快速和强大功能,是每一位Web设计和...

    HTML5程序设计(第2版).[荷]Peter Lubbers(带详细书签).pdf

    《深入HTML5编程(第 2版)》首先介绍了HTML5的历史背景、新的语义标签及与以往HTML版本相比的根本变化,同时揭示了HTML5背后的设计原理。本书在上一版的基础上新增了SVG和拖放API相关内容,并对部分... 13.3 小结 275

    完整版《HTML5高级程序设计》4

    由于上传文件大小限制,只能分为5部分上传,其余部分请在我的资源中找到,下载后共同解压 内容简介  今天,大多数现代浏览器都已经支持HTML5。学习体验HTML5带给Web开发的便捷、快速和强大功能,是每一位Web设计和...

    HTML5高级程序设计.part5

    由于上传文件大小限制,只能分为5部分上传,其余部分请在我的资源中找到,下载后共同解压 内容简介  今天,大多数现代浏览器都已经支持HTML5。学习体验HTML5带给Web开发的便捷、快速和强大功能,是每一位Web设计...

    从入门到精通HTML5——PDF——网盘链接

     第15章 HTML 5中的文件与拖放 280  视频讲解:40分钟  15.1 选择文件 281  15.1.1 通过file对象选择文件 281  15.1.2 使用blob接口获取文件的类型与大小 282  15.1.3 通过类型过滤选择的文件 283  15.2 ...

    完整版《HTML5高级程序设计》3

    由于上传文件大小限制,只能分为5部分上传,其余部分请在我的资源中找到,下载后共同解压 内容简介  今天,大多数现代浏览器都已经支持HTML5。学习体验HTML5带给Web开发的便捷、快速和强大功能,是每一位Web设计和...

    HTML5高级程序设计.part4

    由于上传文件大小限制,只能分为5部分上传,其余部分请在我的资源中找到,下载后共同解压 内容简介  今天,大多数现代浏览器都已经支持HTML5。学习体验HTML5带给Web开发的便捷、快速和强大功能,是每一位Web设计...

    HTML5高级程序设计.part1

    由于上传文件大小限制,只能分为5部分上传,其余部分请在我的资源中找到,下载后共同解压 内容简介  今天,大多数现代浏览器都已经支持HTML5。学习体验HTML5带给Web开发的便捷、快速和强大功能,是每一位Web设计...

    HTML5高级程序设计.part2

    由于上传文件大小限制,只能分为5部分上传,其余部分请在我的资源中找到,下载后共同解压 内容简介  今天,大多数现代浏览器都已经支持HTML5。学习体验HTML5带给Web开发的便捷、快速和强大功能,是每一位Web设计...

    HTML5高级程序设计.part3

    由于上传文件大小限制,只能分为5部分上传,其余部分请在我的资源中找到,下载后共同解压 内容简介  今天,大多数现代浏览器都已经支持HTML5。学习体验HTML5带给Web开发的便捷、快速和强大功能,是每一位Web设计...

    phpcms2008常用函数小结

    - `{$PHPCMS[province]}, {$PHPCMS[city]}, {$PHPCMS[area]}`:用于获取网站所在的地理位置信息。 - `{$PHPCMS[uploaddir]}`:上传文件的默认目录。 - `{$PHPCMS[uploadfiletype]}`:定义允许上传的文件类型。 -...

    JS获取本地地址及天气的方法实例小结

    首先,获取本地地址主要分为两种方式:利用浏览器的地理位置API和使用第三方API通过IP地址获取本地地址。 第一种方式,通过浏览器获取当前位置的经纬度。这需要使用HTML5的Geolocation API,该API提供了一种方法,...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    2.4 本章小结 15 第三章 跨域交互缓存处理设计 17 3.1 跨域交互缓存处理需求 17 3.1.1 缓存技术WebStorage 17 3.1.2 跨域交互缓存处理需求 17 3.1.3 页面回退管理需求 17 3.2 缓存处理机制 18 3.2.1 跨域缓存处理 18...

    网站前端总结

    - **地理位置API**: 提供了获取用户位置的功能。 - **拖拽上传**: 支持直接从桌面拖拽文件到网页。 - **多线程支持**: 虽然HTML5本身不直接支持多线程,但通过Web Workers可以在后台执行脚本,不阻塞用户界面。 ...

Global site tag (gtag.js) - Google Analytics