`
lexinquan
  • 浏览: 47182 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Html5 系列之:地理位置Geolocation

 
阅读更多

简介:Geolocation API用于将用户当前地理位置信息共享给信任的站点,当一个站点要获取用户的当前地理位置,需要通过浏览器请求用户授权。和Geolocation类似的google有个插件Gears,它通过插件安装的方式支持所有浏览器,不过目前google弃用它了。

这里我们讨论的是Geolocation,我们来看看如何使用。


一、检测浏览器是否支持:

if(!navigator.geolocation){
   alert("您的浏览器不支持Geolocation");
   return;
}
我们也可以通过Modernizr检测,“Modernizr is an open-source JavaScript library that helps you build the next generation of HTML5 and CSS3-powered websites.”
if(Modernizr.geolocation){    
    //let's find out where you are!    
} else {    
    // no native geolocation support available    
    // maybe try Gears or another third-party solution    
}


二、调用Geolocation API存在于navigator对象中,包含3个方法:

1、getCurrentPositionnavigator.geolocation.getCurrentPosition(success_callback, error_callback, {geolocation选项});第一个参数是用户允许浏览器共享geolocation成功后的回调方法第二个参数是用获取地理位置信息失败的处理方法,传入错误对象,包含code、message两个属性第三个参数都是geolocation选项,所有的geolocation选项都是可选的,它包含的属性如下:

interface PositionOptions {
    attribute boolean enableHighAccuracy;
    attribute long timeout;
    attribute long maximumAge;
  };

enableHighAccuracy(Boolean型,默认为false,是否尝试更精确地读取纬度和经度,移动设备上,这可能要使用手机上的GPS,这会消耗移动设备更多的电量)timeout(单位为毫秒,默认值为0,在放弃并触发处理程序之前,可以等待的时间----用户选择期间是不计时的)maximumAge(单位为毫秒,默认值为0。用来告诉浏览器是否使用最近缓存的位置数据,如果在maximumAge内有一个请求,将会返回它,而不请求新位置。maximumAge如果为Infinity,则总是使用一个缓存的位置,如果为0则必须在每次请求时查找一个新位置)

2、watchPosition用来跟踪不断变化的地理位置信息,可以设置间隔多少时间获取一次位置,和clearWatch一起使用。


3、clearWatch用来清除Position信息。

   function success_callback(position) {
      // Scrolls the map so that it is centered at (position.coords.latitude, position.coords.longitude).
    }

    // Request repeated updates.
    var watchId = navigator.geolocation.watchPosition(success_callback, {geolocation选项});

    function buttonClickHandler() {
      // Cancel the updates when the user clicks a button.
      navigator.geolocation.clearWatch(watchId);
    }

请求授权访问位置信息


三、实例

if (navigator.geolocation) {  
       navigator.geolocation.getCurrentPosition(function(position) {  
		   var lat = position.coords.latitude;
		   var lon = position.coords.longitude;
                  document.getElementById('geo_loc').innerHTML = '您当前的位置,纬度:' + lat + ',经度:' + lon;  
		   //showonMap(lat,lon);
       }, function(err) {  
           document.getElementById('geo_loc').innerHTML = err.code + "\n" + err.message;  
       });

   } else {  
       document.getElementById('geo_loc').innerHTML = "您当前使用的浏览器不支持Geolocation服务";  
   }

成功后回调获取用户位置数据position,它包含两个属性:coords、timestamp。coords属性有7个值,包含上面用到的纬度、经度。1、accuracy 准确角2、altitude 海拔高度3、altitudeAcuracy 海拔高度的精确度4、heading 行进方向5、speed 地面的速度


四、在地图上显示

if (navigator.geolocation) {  
       navigator.geolocation.getCurrentPosition(function(position) {  
		   var lat = position.coords.latitude;
		   var lon = position.coords.longitude;
           document.getElementById('geo_loc').innerHTML = '您当前的位置,纬度:' + lat + ',经度:' + lon;  
		   showonMap(lat,lon);
       }, function(err) {  
           document.getElementById('geo_loc').innerHTML = err.code + "\n" + err.message;  
       });

   } else {  
       document.getElementById('geo_loc').innerHTML = "您当前使用的浏览器不支持Geolocation服务";  
   }  
    function showonMap(lat,lon){
		var latlng = new google.maps.LatLng(lat, lon);
		var mapOptions = {
			zoom: 13,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			center:latlng
		};
		map = new google.maps.Map(document.getElementById("map"), mapOptions);
		var marker = new google.maps.Marker({  
		  position: latlng,   
		  map: map,   
		  title:'您当前的位置' 
		});  
	}
分享到:
评论

相关推荐

    HTML5的Geolocation地理位置定位API使用教程

    HTML5的Geolocation API是现代Web开发中的一个重要特性,它使得网页应用能够访问用户的地理位置信息,从而实现基于位置的服务。这个API是HTML5标准的一部分,主要用于增强Web应用的交互性和用户体验,尤其在移动设备...

    HTML5系列教程

    - Geolocation:获取用户的地理位置信息,为地理位置服务提供基础。 - WebSockets:实现双向通信,为实时通信应用(如在线聊天、游戏)提供了可能。 2. HTML5与移动开发: HTML5在移动设备上的应用广泛,其跨...

    HTML5及CSS3web前端开发技术习题答案解析.pdf

    - **获取地理位置信息**:通过`Geolocation API`可以直接获取用户的地理位置信息。 - **多线程处理**:引入了`Web Workers`,允许开发者在后台执行长时间任务,提高页面响应速度。 - **文件API**:提供了`FileReader...

    HTML5从入门到精通

    7. Geolocation API:获取用户的地理位置信息,实现位置感知应用。 8. Web Workers和Web Sockets:Web Workers用于后台处理,提高页面响应速度;Web Sockets则提供了双向实时通信能力。 三、HTML5实战应用 1. 响应...

    HTML5企业网站源码 简洁

    HTML5的Geolocation API可以让网站获取用户的地理位置信息,为提供基于位置的服务提供了可能。 7. **表单控件增强**: 新增了date、time、email、url、search等输入类型,以及placeholder属性,增强了表单的可用...

    System.Web.Mvc.Html5.dll .net html5开发必备

    例如,可以使用Html5.Geolocation.GetLocation()来获取用户的地理位置信息。 在实际开发中,System.Web.Mvc.Html5.dll的使用提升了代码的整洁性和效率,使开发者能够更加专注于业务逻辑,而不是HTML5语法的细节。...

    HTML5与CSS3web前端开发技术习题答案.pdf

    - **获取地理位置信息:** 通过Geolocation API可以轻松获取用户的地理位置信息。 - **提高页面响应的多线程:** Web Workers技术实现了后台线程处理,减少了页面加载时间。 - **文件处理和访问:** 文件API如...

    html5 pocket quick reference

    3. **地理位置定位**:利用`geolocation`API,HTML5可以获取用户的地理位置信息,为基于位置的服务提供基础。 4. **拖放功能**:HTML5定义了一套标准的拖放API,允许用户在网页内轻松地进行文件或元素的拖放操作。...

    HTML 5基础之HTML 5 API的威力

    Geolocation API是HTML5 API中非常重要的组成部分之一,它允许Web应用获取用户的地理位置信息。通过获取用户的经纬度坐标,开发者可以提供基于位置的服务(Location-Based Services, LBS),如导航指引、附近地点...

    第01章【HTML5简介】-第02节:HTML语言介绍

    7. Geolocation API:允许网页获取用户的地理位置信息,为地理位置相关的应用提供了便利。 8. Web Workers和Web sockets:Web Workers可以创建后台线程处理密集型计算,避免阻塞用户界面;Web Sockets则提供了双向...

    html5最终版规范pdf版

    8. **Geolocation API**:允许获取用户的地理位置信息,为位置感知应用提供了可能。 9. **WebRTC**:Web Real-Time Communication,支持浏览器间的实时通信,无需借助第三方插件。 10. **WebSocket**:提供全双工...

    HTML5系列教程-HTML5框架、背景和实体

    - **Geolocation API**:获取设备地理位置信息,为位置服务提供基础。 5. **学习路径** - 先从HTML5的基本语法和新特性入手,如新标签、表单控件、多媒体支持等。 - 掌握至少一个HTML5框架,理解其工作原理和...

    html5开发文档

    7. **地理位置**:`geolocation`API可以让网页获取用户的位置信息,这对于地图应用、本地服务类应用非常重要。 8. **WebSocket**:这是一种全双工通信协议,使得浏览器与服务器之间的数据交换更加高效。 9. **...

    基于地理位置app开发网站模板是一款大气宽屏风格的应用APP设计网站模板下载 .rar

    2. HTML5 Geolocation API:此模板可能使用了HTML5的Geolocation API,使得浏览器可以获取用户的精确地理位置信息,从而实现个性化的位置相关功能。 3. CSS3布局和响应式设计:为了达到“大气宽屏风格”,模板很...

Global site tag (gtag.js) - Google Analytics