ios如何获取gps坐标(定位第二节)

原文连接:

https://blog.csdn.net/michael_ouyang/article/details/54378338

--------------------------------------------------------------------

 

在上一篇文章,解决ios 10不能定位的问题,把navigator.geolocation.getCurrentPosition 改成使用第三方api进行定位

http://blog.csdn.net/michael_ouyang/article/details/54137709

 

本文继续讲述原生webkit内核的navigator.geolocation.getCurrentPosition获取到的坐标信息,并且如何解密。为什么要解密,原因下面会进行讲解!

 

首先讲解一下navigator.geolocation.getCurrentPosition的使用方法:

 

 
  1. /**

  2. * @param geolocationSuccess 定位成功的回调函数

  3. * @param geolocationError 定位失败的回调函数

  4. * @param [geolocationOptions]设置对象

  5. */

  6. navigator.geolocation.getCurrentPosition(geolocationSuccess, geolocationError, [geolocationOptions]);


简单的使用示例:

 

 

 
  1. // 定位成功的回调函数

  2. var onSuccess = function(position) {

  3. alert('Latitude: ' + position.coords.latitude + '\n' +

  4. 'Longitude: ' + position.coords.longitude + '\n' +

  5. 'Altitude: ' + position.coords.altitude + '\n' +

  6. 'Accuracy: ' + position.coords.accuracy + '\n' +

  7. 'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' +

  8. 'Heading: ' + position.coords.heading + '\n' +

  9. 'Speed: ' + position.coords.speed + '\n' +

  10. 'Timestamp: ' + position.timestamp + '\n');

  11. };

  12.  
  13. // 定位失败的回调函数

  14. function onError(error) {

  15. alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');

  16. }

  17.  
  18. navigator.geolocation.getCurrentPosition(onSuccess, onError);


 

 

为什么获取到了坐标了还需要解密?

百度api对此进行了解释,链接:http://lbsyun.baidu.com/index.php?title=open/question

那么说明了一点:坐标都是经过加密处理的

如果直接使用navigator.geolocation.getCurrentPosition获取到的坐标信息,是加密的坐标信息,直接使用的话,会明显出现偏差,偏差范围大概在几公里左右!!!那么跟没定位有什么区别╮(╯_╰)╭

 

这里使用百度的api进行解密:

 

 
  1. /**

  2. * 真实经纬度转成百度坐标

  3. * @param gpsPoint 传入百度BMap对象

  4. * @param 0 0:代表GPS

  5. * @param translateCallback 真实坐标转换成百度坐标的回调函数

  6. */

  7. BMap.Convertor.translate(gpsPoint,0, translateCallback);


 

 

完整示例:

●注意:使用百度地图api,首要需要到百度api官网申请百度地图密钥

附申请方法:http://jingyan.baidu.com/article/363872eccda8286e4aa16f4e.html

1、在页面引入js

HTML:

 

 
  1. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6yAoynmTPNlTBa8z1X4LfwGE"></script>

  2. <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>

 

 

2、这里已经已经封装好成函数,使用可以直接复制

js:

 
  1. function getlocation() {

  2. if (window.navigator.geolocation) {

  3. //设置参数

  4. var options = {

  5. enableHighAccuracy: true,

  6. timeout: 10000,

  7. };

  8.  
  9. window.navigator.geolocation.getCurrentPosition(handleSuccess, handleError, options);

  10. } else {

  11. //alert("无法获取地理位置信息");

  12. }

  13. }

  14.  
  15. /**

  16. * 执行window.navigator.geolocation.getCurrentPosition()函数后成功的回调

  17. * @param position 返回一个真实坐标对象position

  18. */

  19. function handleSuccess(position){

  20. var lng = position.coords.longitude; //经度

  21. var lat = position.coords.latitude; //纬度

  22.  
  23. //通过百度地图api对象封装真实的经纬度

  24. var gpsPoint = new BMap.Point(lng,lat);

  25.  
  26. / **

  27. * 真实坐标转换成百度坐标的回调函数

  28. * 通过百度坐标得到地址描述

  29. * @param point 回调百度坐标对象point

  30. */

  31. translateCallback = function (point){

  32. var myGeo = new BMap.Geocoder();

  33. // 根据百度坐标得到地址描述

  34. myGeo.getLocation(new BMap.Point(point.lng,point.lat), function(result){

  35. if (result){

  36. // PS:改成你需要执行的函数

  37. alert(result.address);

  38. }

  39. else{

  40. // PS:改成你需要执行的函数

  41. alert("定位失败,请重新定位");

  42. }

  43. });

  44. }

  45.  
  46. setTimeout(function(){

  47. /**

  48. * 真实经纬度转成百度坐标

  49. * @param gpsPoint 传入百度BMap对象

  50. * @param 0 0:代表GPS,也可以是2:google坐标

  51. * @param translateCallback 真实坐标转换成百度坐标的回调函数

  52. */

  53. BMap.Convertor.translate(gpsPoint,0, translateCallback);

  54. }, 2000);

  55. }

  56.  
  57.  
  58. /* 失败的回调 */

  59. function handleError(error){

  60. // PS:改成你需要执行的函数

  61. alert("获取位置信息失败,请重新定位");

  62. }


 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java并发编程——线程池的工作原理与源码解读

2019独角兽企业重金招聘Python工程师标准>>> 线程池的简单介绍 基于多核CPU的发展&#xff0c;使得多线程开发日趋流行。然而线程的创建和销毁&#xff0c;都涉及到系统调用&#xff0c;比较消耗系统资源&#xff0c;所以就引入了线程池技术&#xff0c;避免频繁的线…

电驴更新地址

emule是通过ED2K网络和KAD网络寻找、连接其他emule客户端的&#xff0c;所以服务器列表和KAD节点文件是emule的必需文件。 有些新手由于下载官方原版emule压缩包或其他未集成这些必需文件的emule压缩包&#xff0c;从而出现“连接不上ED2K与KAD”问题。所以学会下载更新服务器…

IOS内购详解

介绍 最近开发的一款APP上架被驳回了&#xff0c;理由是&#xff1a; 上架的APP是培训类&#xff0c;里面金牌视频课程需要购买&#xff0c;Android端使用支付宝&#xff0c;微信支付。 苹果规定 数字化内容、App功能以及服务等&#xff0c;需要使用内购 真实世界中的服务(…

汇编中的函数调用与递归

栈帧的结构 倘若我们要想搞清楚过程的实现&#xff0c;就必须先知道栈帧的结构是如何构成的。栈帧其实可以认为是程序栈的一段&#xff0c;而程序栈又是存储器的一段&#xff0c;因此栈帧说到底还是存储器的一段。那么既然是一段&#xff0c;肯定有两个端点&#xff0c;这个不需…

Redmine数据库备份及搬家

Bitnami Redmine的备份分2种方式&#xff1a; 1.导出数据库 2.整个目录搬家 不管是哪种都想停掉服务&#xff0c;redmine相关的服务有以下5个&#xff1a; redmineApache   redmineMySQL   redmineSubversion   redmineThin1   redmineThin2 可以打开windows服务控制面…

Redmine项目管理工具安装

Redmine免费开源的项目管理工具 下载 一键安装工具 https://bitnami.com/stack/redmine/installer 安装 Redmine一键安装工具集成了php服务&#xff0c;mysql服务。尽管安装就好。 安装完成后&#xff0c;在开始菜单&#xff0c;找到-----Bitnami Redmine Stack--------Bi…

方便微信公众号等手机网页调试插件eruda和vConsole

原文地址&#xff1a;https://blog.csdn.net/qq_39234840/article/details/80951710 ---------------------------------------------------------- 调试插件一&#xff1a;eruda&#xff08;推荐&#xff0c;因为比vConsole功能多&#xff09; <script src"//cdn.js…

WebServiceStudio.exe测试webservice接口工具

WebServiceStudio.exe测试webservice接口工具 下载链接 https://pan.baidu.com/s/1gf8ajS3 打开工具WebServiceStudio&#xff0c;如下填写地址&#xff0c;点击【Get】按钮 会显示出需要传参的地方&#xff0c;在value中填写xml参数 输入完value值后&#xff0c;点击【Invok…

Navicat工具导出Mysql数据表结构到Excel文件中

原文链接&#xff1a;https://blog.csdn.net/zt15732625878/article/details/77978266 ------------------------------------------------------------------------ 前言 项目中数据库设计已经完成&#xff0c;现在到了代码实现的阶段&#xff0c;数据库中没有数据&#xff…

利用MAVEN的profile 实现打包环境的切换

乐哉码农产生问题的背景 由于在项目开发的时候&#xff0c;我们一般都是使用的本地库&#xff0c;数据库连接写的是本地的&#xff0c;如果我们将项目打成war的时候&#xff0c;里面的配置连接写的是我们本地的&#xff0c;当我们直接把war拷贝到服务器上面进行部署的时候&…

centos升级glibc(升级到 2.17版)

1、原先的系统glibc库的版本是2.12&#xff0c;需要升级到2.17版本。 下载地址&#xff1a; http://ftp.gnu.org/gnu/glibc/ http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz 这里可以选择你所需要的版本。 2、安装部署 [rootkafzook1 common]# tar -xf glibc-2.17.tar.g…

oracle data guard方案,Oracle Data Guard 概念篇

一个Data Guard 配置由一个生产库和一个或者多个standby数据库组成&#xff0c;在Data Guard配置中&#xff0c;主库和备库都既可以是rac环境&#xff0c;也可以是单机环境。这篇文章主要介绍dataguard的一些基本知识dataguard的分类、dataguard的服务类型、dataguard的保护模式…

洛谷P4133 [BJOI2012]最多的方案(记忆化搜索)

题意 题目链接 求出把$n$分解为斐波那契数的方案数&#xff0c;方案两两不同的定义是分解出来的数不完全相同 Sol 这种题&#xff0c;直接爆搜啊。。。 打表后不难发现$<1e18$的fib数只有88个 最先想到的应该是直接把$n$加入到搜索状态里&#xff0c;然后枚举能被分成哪些 但…

大话php设计模式视频,大话PHP设计模式

工厂模式用工厂方法或者类来实例化对象&#xff0c;而不是直接new。首先我们需要创建一个工厂类&#xff0c;比如Factory.php。如果不使用工厂模式的&#xff0c;我们需要一个对象的时候通常需要new Inexistence\girlfriend();然而我们一般不只在一个地方需要这个对象&#xff…

美团点评基于MGR的CMDB高可用架构搭建之路【转】

王志朋 美团点评DBA 曾在京东金融担任DBA&#xff0c;目前就职于美团点评&#xff0c;主要负责金融业务线数据库及基础组件数据库的运维。 MySQL Group Replication&#xff08;以下简称MGR&#xff09;&#xff0c;于5.7.17版本正式GA&#xff0c;由Oracle官方出品&#xff0c…

redmine更换主题

主题列表&#xff1a;http://www.redmine.org/projects/redmine/wiki/Theme_List 虽然有很多主题&#xff0c;但是很多主题都是要钱的&#xff0c;像这类&#xff08;上图&#xff09;没有下载地址的&#xff0c;都是要钱的。 含GitHub的下载地址的&#xff0c;是免费可下载的&…

redmine 邮箱配置(阿里云+windows)

说明 密码是第三方的授权码&#xff0c;不是邮箱密码 需要登录126网页版&#xff0c;在设置里开启 smtp 等第三方服务&#xff0c;设置授权码 阿里云Linux 默认屏蔽25号端口&#xff0c;所以需要开启ssl&#xff0c;和使用 465 端口 重启下 redmind sh /opt/redmine-3.4.6-…

linux查看当前用户终端,Linux----基本命令的使用(vi命令,查看文件内容,显示进程,切换用户等)...

1、vi是linux系统上经常使用的一个文本编辑器&#xff0c;其有三种模式&#xff1a;命令模式、编辑模式(插入模式)、末行模式。命令模式——>编辑模式&#xff1a;“i a o I A O”linux编辑模式——>命令模式&#xff1a;“ESC”shell命令模式——>末行模式&#xff1…

centos6.8 环境一键安装包 nginx配置thinkphp5

---恢复内容开始--- lnmp1.4 一键安装包 nginx配置thinkphp5 环境&#xff1a;Nginx1.12.1 PHP5.6 Coentos6.8 修改网站配置文件 server{listen 443 ssl http2;#listen [::]:443 ssl http2;server_name xxx.cn;index index.html index.htm index.php default.html default.ht…

Linux下BitNami Redmine的插件安装与更新

截至2017年3月27日&#xff0c;Redmine-3.3.2-2安装以下的15款插件全部成功并通过测试&#xff08;下面显示为插件正确文件夹名&#xff09;&#xff1a; easy_wbs redmine_ckeditor 提供所见即所得编辑器 redmine_graphs 提供部分问题图表功能 progressive_projects_list 是…