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 })();
复制代码
分享到:
相关推荐
《Cocos2d-JS开发之旅:从HTML5到原生手机游戏》是一本深入探讨Cocos2d-JS框架的书籍,旨在帮助开发者从Web前端的HTML5技术过渡到跨平台的原生手机游戏开发。Cocos2d-JS是Cocos2d-x引擎的一个分支,它结合了...
通过上述知识点,本文详细介绍了如何通过JavaScript实现基于手机定位获取当前位置的细节,适用于开发移动网页或者应用。代码示例有助于理解整个流程的实现,并且可以直接应用于实际开发中,以增强用户体验。
### HTML5地理位置定位 #### 知识点一:HTML5地理位置定位的概念与革命性 - **HTML5地理位置定位**:这是一种新兴技术,允许Web应用程序访问用户的地理位置信息,无需依赖任何插件或本机应用程序。 - **W3C ...
HTML5技术在手机端餐饮外卖应用中的应用是一个重要的知识点,特别是在当前移动互联网高度发达的时代。"Html5_手机页.rar"这个压缩包文件显然包含了针对H5外卖餐饮服务的源代码,适合用于创建微信小程序、WAP版或者...
在这个标题为“6款html5手机顶部导航菜单遮罩显示效果”的主题中,我们将深入探讨HTML5在手机顶部导航菜单设计中的应用,特别是关于遮罩显示效果的实现。 首先,导航菜单是任何网站或应用的重要组成部分,特别是在...
Cocos2d-js是Cocos2d-x家族的一员,是一个跨平台的游戏开发框架,它将JavaScript与C++相结合,使得开发者能够用JavaScript编写游戏,并在HTML5、Android和iOS等多平台上运行。本教程旨在深入解析Cocos2d-js的使用...
本示例主要探讨了两种使用JavaScript进行定位的方法,包括原生JavaScript定位和jQuery定位,这两种方法都能帮助开发者实现当用户点击某个对象时,页面自动滚动至特定位置的效果。下面我们将详细讲解这两种定位方式...
《HTML5+JavaScript+CSS 商城(模拟联想)购物系统详解》 HTML5、JavaScript 和 CSS 是构建现代网页和应用程序的三大核心技术。本项目“HTML5+JavaScript+CSS 商城(模拟联想)购物系统”充分利用这三种技术,打造...
### HTML5培训之地理定位详解 #### 一、地理定位概览 HTML5地理定位功能是一种能够让网页应用访问用户地理位置的技术。它通过浏览器提供了一种简单而统一的方式,让开发者可以请求并处理用户的地理位置信息。这在...
HTML5手机端三级联动城市选择代码是...总的来说,HTML5手机端三级联动城市选择代码是结合了HTML5、JavaScript(包括AJAX、DOM操作和事件处理)、以及可能的前端框架技术的产物,它为移动用户提供了便捷的地区选择体验。
手机卫星定位网站模板是一款专为手机APP应用设计的HTML模板,旨在提供一个高效、美观且功能丰富的展示平台,用于官方网站的建设和推广。该模板通常包含了多种页面布局、色彩方案、字体样式以及交互元素,旨在适应...
总结来说,"js手机端,H5端,自适应日历插件"是针对HTML5应用和移动设备的,它提供了一个易于理解和使用的日历组件。通过Mobiscroll这样的插件,开发者可以快速地在项目中集成高质量的日历功能,同时保持良好的用户...
4. 画布(Canvas):通过JavaScript可以利用HTML5的Canvas元素绘制动态图形,创建丰富的视觉效果,非常适合手机游戏或数据可视化。 5. 视频与音频:HTML5的`<video>`和`<audio>`标签使得在网页中内嵌多媒体内容变得...
HTML5是现代网页开发的关键技术,它带来了许多增强用户体验的新特性,如语义化标签、离线存储、媒体元素、 canvas 画布、svg矢量图以及Geolocation定位等。在这款"html5+js最小巧的响应式分步问卷调查表单模板"中,...
首先,我们要理解HTML5作为新一代的超文本标记语言,其核心特性包括更好的语义化、离线存储、媒体元素增强、拖放功能、 canvas 和svg等图形绘制以及地理定位等。这些特性使得HTML5能够更好地适应移动设备,并提供了...
在Android平台上,HTML5是一种强大的技术,它允许开发者在网页应用中实现许多原生功能,包括获取手机设备信息。这个话题主要涉及如何通过HTML5的Web API与Android系统交互,从而得到诸如设备型号、操作系统版本、...
《Cocos2d-JS开发之旅:从HTML5到原生手机游戏》是一本深入探讨Cocos2d-JS框架的书籍,旨在帮助开发者从Web前端的HTML5技术过渡到跨平台的原生手机游戏开发。Cocos2d-JS是Cocos2d-x引擎的一个分支,它结合了...
在本项目"仿华为商城部分前端界面html+css+js"中,我们主要探讨的是如何利用Web前端技术来构建一个类似华为商城的电子商务网站的用户界面。这个项目着重于实现HTML结构、CSS样式以及JavaScript交互功能,从而为用户...
- script.js:JavaScript文件,实现了HTML5的交互逻辑和功能。 - style.css:CSS文件,定义了页面的样式和布局。 - audio.mp3/video.mp4:示例音频和视频文件。 - images/:存放图片资源的目录。 - icons/:可能包含...