Html5 Geolocation获取地理位置信息实例


Posted in HTML / CSS onDecember 09, 2016

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

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

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

Html5 Geolocation获取地理位置信息实例

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

<!DOCTYPE html>
<html>
    <head>
        <title>H5地理位置Demo</title>
        <script src="http://api.map.baidu.com/api?v=1.3" type="text/javascript">
        </script>
        <script type="text/javascript" src="convertor.js">
        </script>
    </head>
    <body>
        <div id="map" style="width:600px; height:400px">
        </div>
    </body>
    <script type="text/javascript">
        if (window.navigator.geolocation) {
            var options = {
                enableHighAccuracy: true,
            };
            window.navigator.geolocation.getCurrentPosition(handleSuccess, handleError, options);
        } else {
            alert("浏览器不支持html5来获取地理位置信息");
        }
        
        function handleSuccess(position){
            // 获取到当前位置经纬度  本例中是chrome浏览器取到的是google地图中的经纬度
            var lng = position.coords.longitude;
            var lat = position.coords.latitude;
            // 调用百度地图api显示
            var map = new BMap.Map("map");
            var ggPoint = new BMap.Point(lng, lat);
            // 将google地图中的经纬度转化为百度地图的经纬度
            BMap.Convertor.translate(ggPoint, 2, function(point){
                var marker = new BMap.Marker(point);
                map.addOverlay(marker);
                map.centerAndZoom(point, 15);
            });
        }
        
        function handleError(error){
        
        }
    </script>
</html>

convertor.js文件:

(function() { // 闭包
    function load_script(xyUrl, callback) {
        var head = document.getElementsByTagName('head')[0];
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = xyUrl;
        // 借鉴了jQuery的script跨域方法
        script.onload = script.onreadystatechange = function() {
            if ((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
                callback && callback();
                // Handle memory leak in IE
                script.onload = script.onreadystatechange = null;
                if (head && script.parentNode) {
                    head.removeChild(script);
                }
            }
        };
        // Use insertBefore instead of appendChild to circumvent an IE6 bug.
        head.insertBefore(script, head.firstChild);
    }
    function translate(point, type, callback) {
        var callbackName = 'cbk_' + Math.round(Math.random() * 10000); // 随机函数名
        var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type
                + "&to=4&x=" + point.lng + "&y=" + point.lat
                + "&callback=BMap.Convertor." + callbackName;
        // 动态创建script标签
        load_script(xyUrl);
        BMap.Convertor[callbackName] = function(xyResult) {
            delete BMap.Convertor[callbackName]; // 调用完需要删除改函数
            var point = new BMap.Point(xyResult.x, xyResult.y);
            callback && callback(point);
        }
    }

    window.BMap = window.BMap || {};
    BMap.Convertor = {};
    BMap.Convertor.translate = translate;
})();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
表单button的outline在firefox浏览器下的问题
Dec 24 HTML / CSS
CSS图片翻转动画技术详解(IE也实现了)
Apr 03 HTML / CSS
使用css3实现的tab选项卡代码分享
Dec 09 HTML / CSS
css sprite简单实例
May 23 HTML / CSS
10分钟理解CSS3 FlexBox弹性布局
Dec 20 HTML / CSS
详解CSS3新增的背景属性
Dec 25 HTML / CSS
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
Apr 26 HTML / CSS
HTML5进度条特效
Dec 18 HTML / CSS
HTML5 canvas基本绘图之图形组合
Jun 27 HTML / CSS
一文彻底解决HTML5页面中长按保存图片功能
Jun 10 HTML / CSS
元素水平垂直居中的方式
Mar 31 HTML / CSS
html5实现点击弹出图片功能
Jul 16 HTML / CSS
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
Dec 03 #HTML / CSS
HTML5标签大全
Nov 23 #HTML / CSS
HTML5拖放效果的实现代码
Nov 17 #HTML / CSS
html5 div布局与table布局详解
Nov 16 #HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
Nov 16 #HTML / CSS
HTML5制作表格样式
Nov 15 #HTML / CSS
详解HTML5中的拖放事件(Drag 和 drop)
Nov 14 #HTML / CSS
You might like
PHP中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
JS实现php的伪分页
2008/05/25 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
javascript引导程序
2008/10/26 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
js中对象和面向对象与Json介绍
2019/01/21 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
django 微信网页授权认证api的步骤详解
2019/07/30 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
linux面试题参考答案(11)
2016/11/26 面试题
自主招生自荐信
2013/12/08 职场文书
打架检讨书100字
2014/01/08 职场文书
晚归检讨书
2014/02/19 职场文书
喝酒检查书范文
2014/02/23 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
补充协议书
2015/01/28 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python
python实现图片九宫格分割的示例
2021/04/25 Python