Html5 Geolocation获取地理位置信息

2023-05-16

http://www.cnblogs.com/lwbqqyumidi/archive/2012/11/10/2764352.html


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

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

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

代码如下所示(其中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>

  1. 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;
 })();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Html5 Geolocation获取地理位置信息 的相关文章

  • 判断点是否在多边形内

    As per my requirement I am drawing polygons on google map shown in the image below using maps v2 现在我需要在用户输入该特定多边形时显示警报 如
  • 应用程序在调试时不会崩溃,但在正常运行时会崩溃

    系统信息 Windows 10 技术预览版 内部版本 9926 Visual Studio 社区 2013尝试调试 美国电话电报公司 Lumia 635 Windows 10 技术预览版 适用于版本 9941 的手机 带有 Lumia Cy
  • 哪些 Web 浏览器支持通过 HTML5 进行地理定位?

    哪些网络浏览器 和版本 支持通过 HTML5 进行地理定位 在桌面上仅支持 Firefox 不确定 Opera 是否已将其包含在官方版本中 在移动设备上 mobile safari 3 和 android 2 x 浏览器 有关支持的更多信息
  • 四叉树和Kd树

    我有一组不同位置的纬度和经度 也知道我当前位置的纬度和经度 我必须找出距离当前位置最近的地方 Kdtree 和四叉树中哪种算法最适合从纬度和经度集合中找出邻居位置 一种相对于另一种有什么优势 我们如何在 C 中将这些实现到算法中以实现上述目
  • 应用程序中所有国家/地区的城市和邮政编码

    有没有一种方法可以将所有国家 州 城市的邮政编码存储在一个数据库中 我一直在到处寻找 我发现地名网 http www geonames org 我猜其中包含了所有内容 但无法直接获取该数据 我正在使用导轨 如果有任何助手或插件就太好了 如果
  • iPhone - 按纬度和经度划分的 SQLite 距离

    我的应用程序中有一个嵌入式数据库 其中包含一些感兴趣点的所有纬度和经度 我需要知道我与这些点的距离 使用 GPS 获取我的位置 我的问题是 我刚刚发现 SQLite 无法使用我的查询来计算距离 因为它不计算三角函数 SIN COS 我试图避
  • 在 Google 电子表格上,如何称呼 IP 的城市、国家/地区?

    我想知道是否有一个公式 脚本可以在 Google 电子表格上使用来获取 IP 地址数组的城市 位置 也就是说 假设 A 列上的每个单元格都有 100 个 IP 地址 我应该在 B 列上使用什么公式 脚本来获取各自的城市和位置 最简单的方法是
  • 如何根据当前位置设置正确的纬度和经度

    我的目标是使用 Google Places API 进行自动完成预测 现在我想制作某种算法 该算法将采用当前位置的纬度和经度 并仅对直径为 100 200 公里的地点进行预测 那么 此时我获取用户当前位置的纬度和经度 如何设置100 200
  • 如何以编程方式获取设备的当前地理位置

    我需要获取设备当前的地理位置 场景 如果我在US my device location should be US 和我在的时候的情况一样UK my device location should be UK 我需要用于查找此地理位置的示例代码
  • google.maps.Geocoder.geocode() Geometry.location lat/lng 属性名称经常更改

    我有一个应用程序 我正在使用 Google Javascript 地理编码 API 来获取地址的纬度 经度 代码是这样的 geocoder new google maps Geocoder geocoder geocode address
  • 如何将彼此“接近”的纬度/经度点分组?

    我有一个用户提交的纬度 经度点的数据库 并且正在尝试将 接近 点分组在一起 接近 是相对的 但目前看来约为 500 英尺 起初 我似乎只能按前 3 个小数位具有相同纬度 经度的行进行分组 大约是一个 300x300 的盒子 了解当您远离赤道
  • MapItemView 在 dataChanged 信号后不会更新

    我正在使用 QMLMapItemView使用 C 的组件QAbstractListModel基于模型 这MapItemView当模型重置时 或者每当添加新项目或删除现有项目时 工作正常 但是 那MapItemView不反映对已添加项目的更改
  • 如何在Android中获取当前位置[重复]

    这个问题在这里已经有答案了 我在使用 Android 定位系统的网络提供程序获取当前位置坐标时遇到麻烦 已经阅读了大量教程并在我的项目中实现了 4 或 5 个现有类 所有这些类都给了我最后的坐标 但不是当前的坐标 我很确定这个问题是我所缺少
  • Cordova 地理定位不适用于 Android

    我想在 Android 上使用地理定位 我用 Apache Cordova 编写应用程序 地理定位在 android 电脑模拟器和 android 手机上均不起作用 I try http cordova apache org docs en
  • 无论用户位置设置如何,如何确定 Android 设备当前的国家/地区位置?

    即使用户的设备已关闭 GPS 并且不允许应用程序访问其位置 我也需要确定设备所在的国家 地区 iso3 我还需要考虑没有 SIM 卡的平板电脑 因此无法使用 telephonyManager 由于这个原因 我不相信我可以使用位置管理器 也因
  • Origin 无权使用地理定位服务 - 即使通过 HTTPS

    我有一个通过 HTTPS 使用 HTML5 地理定位的网页 它在桌面浏览器上运行良好 然而 在 iOS Safari 上 我收到错误 Origin 无权使用地理定位服务 我已确保页面上的所有内容都通过 HTTPS 加载 每个图像 每个脚本和
  • Javascript 函数 - 将地理位置代码转换为街道地址

    我正在寻找一个 javascript 函数或 jquery 库来将地理位置代码 例如 42 2342 32 23452 转换为街道地址 举些例子 navigator geolocation getCurrentPosition functi
  • 如何在 UIImagePickerController 捕获图像的瞬间获取当前位置?

    我研究了如何从返回的图像中获取位置数据UIImagePickerController相机 但是 我认为最简单的方法是获取当前位置CLLocationManager此刻UIImagePickerController捕获图像 有办法做到这一点吗
  • 尝试在 iOS 10 上的 safari 中获取地理位置时出现错误

    已阻止 对地理位置的访问因不安全的连接而被阻止http www hnsjb cn http www hnsjb cn 我应该将网站更改为 https 协议吗 iOS 10 和桌面 Safari 10 现在似乎需要 https 连接 Safa
  • 谷歌地图 API 的替代品 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案

随机推荐