Html5中提供了地理位置信息的API,通过浏览器来获取用户当前位置。基于此特性可以开发基于位置的服务应用。在获取地理位置信息前,首先浏览器都会向用户询问是否愿意共享其位置信息,待用户同意后才能使用。

Html5获取地理位置信息是通过Geolocation API提供,使用其getCurrentPosition方法,此方法中有三个参数,分别是成功获取到地理位置信息时所执行的回调函数,失败时所执行的回调函数和可选属性配置项。

如下Demo演示了通过Geolocation获取地理位置信息,并在百度地图上显示当前位置(通过调用百度地图API)。实验结果发现位置被定位到了大学城内环东四路入口处,与本人所在位置(华工学生宿舍)偏差还是有点大的,达到200-300米左右。

代码如下所示(其中convertor.js为百度地图提供的坐标转化文件):

 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>H5地理位置Demo</title>
5 <script src="http://api.map.baidu.com/api?v=1.3" type="text/javascript">
6 </script>
7 <script type="text/javascript" src="convertor.js">
8 </script>
9 </head>
10 <body>
11 <div id="map" style="width:600px; height:400px">
12 </div>
13 </body>
14 <script type="text/javascript">
15 if (window.navigator.geolocation) {
16 var options = {
17 enableHighAccuracy: true,
18 };
19 window.navigator.geolocation.getCurrentPosition(handleSuccess, handleError, options);
20 } else {
21 alert("浏览器不支持html5来获取地理位置信息");
22 }
23
24 function handleSuccess(position){
25 // 获取到当前位置经纬度 本例中是chrome浏览器取到的是google地图中的经纬度
26 var lng = position.coords.longitude;
27 var lat = position.coords.latitude;
28 // 调用百度地图api显示
29 var map = new BMap.Map("map");
30 var ggPoint = new BMap.Point(lng, lat);
31 // 将google地图中的经纬度转化为百度地图的经纬度
32 BMap.Convertor.translate(ggPoint, 2, function(point){
33 var marker = new BMap.Marker(point);
34 map.addOverlay(marker);
35 map.centerAndZoom(point, 15);
36 });
37 }
38
39 function handleError(error){
40
41 }
42 </script>
43 </html>

convertor.js文件:

 1 (function() { // 闭包
2 function load_script(xyUrl, callback) {
3 var head = document.getElementsByTagName('head')[0];
4 var script = document.createElement('script');
5 script.type = 'text/javascript';
6 script.src = xyUrl;
7 // 借鉴了jQuery的script跨域方法
8 script.onload = script.onreadystatechange = function() {
9 if ((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
10 callback && callback();
11 // Handle memory leak in IE
12 script.onload = script.onreadystatechange = null;
13 if (head && script.parentNode) {
14 head.removeChild(script);
15 }
16 }
17 };
18 // Use insertBefore instead of appendChild to circumvent an IE6 bug.
19 head.insertBefore(script, head.firstChild);
20 }
21 function translate(point, type, callback) {
22 var callbackName = 'cbk_' + Math.round(Math.random() * 10000); // 随机函数名
23 var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type
24 + "&to=4&x=" + point.lng + "&y=" + point.lat
25 + "&callback=BMap.Convertor." + callbackName;
26 // 动态创建script标签
27 load_script(xyUrl);
28 BMap.Convertor[callbackName] = function(xyResult) {
29 delete BMap.Convertor[callbackName]; // 调用完需要删除改函数
30 var point = new BMap.Point(xyResult.x, xyResult.y);
31 callback && callback(point);
32 }
33 }
34
35 window.BMap = window.BMap || {};
36 BMap.Convertor = {};
37 BMap.Convertor.translate = translate;
38 })();

Html5 Geolocation获取地理位置信息(转)的更多相关文章

  1. Html5 Geolocation获取地理位置信息

    Html5中提供了地理位置信息的API,通过浏览器来获取用户当前位置.基于此特性可以开发基于位置的服务应用.在获取地理位置信息前,首先浏览器都会向用户询问是否愿意共享其位置信息,待用户同意后才能使用. ...

  2. AngularJS进阶(二十)HTML5实现获取地理位置信息并定位功能

    HTML5实现获取地理位置信息并定位功能 注:请点击此处进行充电! 前言 这篇文章主要介绍了HTML5实现获取地理位置信息并定位功能,本文讲解了原生HTML5.百度地图.谷歌地图等三种获取理位置信息并 ...

  3. html5实现获取地理位置信息并定位

    这里主要讲h5实现获取地理位置信息并定位功能,本文讲解了原生h5,百度地图,谷歌地图等三种获取地理信息并定位的方法,需要的朋友可以参考下: h5提供了地理位置功能(Geolocation API),能 ...

  4. HTML5实现获取地理位置信息并定位功能

    HTML5提供了地理位置定位功能(Geolocation API),能确定用户位置,我们可以借助HTML5的该特性开发基于地理位置信息的应用.本文结合实例给大家分享如何使用HTML5,借助百度.谷歌地 ...

  5. html5获取地理位置信息API

    html5获取地理位置信息API 在HTML5中,可以看下如何使用Geolocation API来获得用户的地理位置信息,如果该浏览器支持的话,且设备具有定位功能,就能够直接使用这组API来获取当前位 ...

  6. HTML5 获取地理位置信息

    HTML5增加的新功能,获取地理位置信息,如果浏览器支持且设备有定位功能,就能够直接使用这组API来获取当前信息位置.该Geolocation API可以应用于移动设备中的地理位置. Geolocat ...

  7. html5代码,获取地理位置

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta htt ...

  8. PhoneGap Geolocation 获取地理位置 api

    一. PhoneGap Geolocation 对象介绍 1.使应用程序可以访问地理位置信息.geolocation 对象提供了对设备 GPS 传感器的访问.Geolocation 提供设备的位置信息 ...

  9. 百度api:根据经纬度获取地理位置信息

    调用百度api,根据经度和纬度获取地理位置信息,返回Json. C#代码: using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Syste ...

随机推荐

  1. 【BZOJ】【3437】小P的牧场

    DP/斜率优化 斜率优化基本题……等等,好像就没啥变化啊= = 嗯目测这题跟仓库建设差不多?写题的时候倒是没想这么多……直接推了公式. $$f[i]=min\{f[j]+cal(j,i)+a[i]\} ...

  2. 第九章 LinkedBlockingQueue源码解析

    1.对于LinkedBlockingQueue需要掌握以下几点 创建 入队(添加元素) 出队(删除元素) 2.创建 Node节点内部类与LinkedBlockingQueue的一些属性 static ...

  3. VMware与Cisco DRAC中的virtual disk的对应关系

    笔者面临的问题如下: 笔者有一台Cisco C240的服务器, 其中有十块容量一样大的SAS的local disk, 一块SSD. 其中的两块SAS盘组成了一个RAID 1的virtual drive ...

  4. Android组件之BroadCast简单实践

    作为Android的四大组件之一,没有理由不介绍一下BroadCast,BroadCast中文简单翻译就是广播,前阵子浙江某大学的啦啦操,广场舞的大妈,其中大妈和学生从喇叭和音响上听到的声音就是事件源 ...

  5. 俄罗斯水手 [C#] 对List<T>取交集、连集及差集

    ※本文使用int為例,若為使用自訂之DataModel,需實作IEquatable<T>介面才能使用 1.  取交集 (A和B都有) List A : { 1 , 2 , 3 , 5 , ...

  6. 【PAT Advanced Level】1013. Battle Over Cities (25)

    这题给定了一个图,我用DFS的思想,来求出在图中去掉某个点后还剩几个相互独立的区域(连通子图). 在DFS中,每遇到一个未访问的点,则对他进行深搜,把它能访问到的所有点标记为已访问.一共进行了多少次这 ...

  7. svn自助改动password(PHP脚本实现)

    #创建脚本文件夹 mkdir -p /var/www/svn/svntools #创建apache配置文件 touch /etc/httpd/conf.d/alias.conf #输入下面内容: Al ...

  8. 使用AKKA做分布式爬虫的思路

    上周公司其它小组在讨论做分布式爬虫,我也思考了一下.提了一个方案,就是使用akka分布式rpc框架来做,自己写master和worker程序,client向master提交begin任务或者其它爬虫需 ...

  9. 火狐浏览器Firefox不支持alt怎么

    因为HTML代码的解析不同,需要把标签文字"alt"换成"title",就可以在FireFox中正常显示了. 如下所示,IE对于alt和title均可以支持 但 ...

  10. which命令(转)

    原文:http://www.cnblogs.com/peida/archive/2012/11/08/2759805.html 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一 ...