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.pswp.cn/news/537881.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537881.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537881.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java并發編程——線程池的工作原理與源碼解讀

2019獨角獸企業重金招聘Python工程師標準>>> 線程池的簡單介紹 基于多核CPU的發展&#xff0c;使得多線程開發日趨流行。然而線程的創建和銷毀&#xff0c;都涉及到系統調用&#xff0c;比較消耗系統資源&#xff0c;所以就引入了線程池技術&#xff0c;避免頻繁的線…

php pcre回溯攻擊,php preg_match pcre回溯繞過

原理需要知識:正則NFA回溯原理&#xff0c;php的pcre.backtrack_limit設置。正則NFA回溯原理正則表達式是一個可以被"有限狀態自動機"接受的語言類。"有限狀態自動機",擁有有限數量的狀態,每個狀態可以遷移到零個或多個狀態,輸入字串決定執行哪個狀態的遷移…

電驢更新地址

emule是通過ED2K網絡和KAD網絡尋找、連接其他emule客戶端的&#xff0c;所以服務器列表和KAD節點文件是emule的必需文件。 有些新手由于下載官方原版emule壓縮包或其他未集成這些必需文件的emule壓縮包&#xff0c;從而出現“連接不上ED2K與KAD”問題。所以學會下載更新服務器…

Vue CLI 3 可以使用 TypeScript 生成新工程

TypeScript 支持 在 Vue 2.5.0 中&#xff0c;我們大大改進了類型聲明以更好地使用默認的基于對象的 API。同時此版本也引入了一些其它變化&#xff0c;需要開發者作出相應的升級。閱讀博客文章了解更多詳情。 發布為 NPM 包的官方聲明文件 靜態類型系統能幫助你有效防止許多潛…

手機端本地圖片或者拍照的上傳功能

原文連接 https://blog.csdn.net/m0_37852904/article/details/78550136 ---------------------------------------------------------- 最近剛好在做手機端的圖片上傳功能&#xff0c;便記錄下 html&#xff1a; <input type"file" class"hide" i…

php scandir sftp,CentOS 下使用SFTP實現網站自動生成FTP賬號,實現Chroot功能

背景 手上有一個這樣的系統&#xff1a;后臺可以直接新建項目(網站)&#xff0c;只需輸入項目名稱、訪問域名(二級)以及其他一些額外信息&#xff0c;就可自動生成一個模板網站。大致原理是&#xff1a;提交這些信息的時候&#xff0c;后臺會給項目新建一個目錄&#xff0c;并把…

IOS內購詳解

介紹 最近開發的一款APP上架被駁回了&#xff0c;理由是&#xff1a; 上架的APP是培訓類&#xff0c;里面金牌視頻課程需要購買&#xff0c;Android端使用支付寶&#xff0c;微信支付。 蘋果規定 數字化內容、App功能以及服務等&#xff0c;需要使用內購 真實世界中的服務(…

匯編中的函數調用與遞歸

棧幀的結構 倘若我們要想搞清楚過程的實現&#xff0c;就必須先知道棧幀的結構是如何構成的。棧幀其實可以認為是程序棧的一段&#xff0c;而程序棧又是存儲器的一段&#xff0c;因此棧幀說到底還是存儲器的一段。那么既然是一段&#xff0c;肯定有兩個端點&#xff0c;這個不需…

php 相親 段子,精彩的男女幽默段子

精彩的男女幽默段子。撒嬌老婆洗完澡對老公撒嬌說&#xff1a;老公&#xff0c;抱我到床上去吧。老公看了看老婆&#xff0c;冷冷的回答道&#xff1a;我還是把床搬過來吧&#xff01;所以&#xff0c;撒嬌還是要看體型&#xff01;單身老公說&#xff1a;老婆&#xff0c;你不…

Redmine數據庫備份及搬家

Bitnami Redmine的備份分2種方式&#xff1a; 1.導出數據庫 2.整個目錄搬家 不管是哪種都想停掉服務&#xff0c;redmine相關的服務有以下5個&#xff1a; redmineApache   redmineMySQL   redmineSubversion   redmineThin1   redmineThin2 可以打開windows服務控制面…

且看BCH開啟的“信用本位”時代

??? 且看BCH開啟的“信用本位”時代 比特幣向來被稱為“金本位”的互聯網實驗&#xff0c;由于中本聰先生的天才發明&#xff0c;POW機制給予了比特幣與黃金同樣的生產模式。所以&#xff0c;時至今日&#xff0c;BCE依然自稱為“數字黃金”。 只可惜&#xff0c;“一葉障目…

oracle設置臨時表空間,Oracle臨時表空間查看、添加臨時表空間數據文件、修改默認臨時表空間 方法!...

--查表空間使用率情況(含臨時表空間)SELECT d.tablespace_name "Name", d.status "Status",TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), 99,999,990.90) "Size (M)",TO_CHAR (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024,99999999.99) US…

Redmine項目管理工具安裝

Redmine免費開源的項目管理工具 下載 一鍵安裝工具 https://bitnami.com/stack/redmine/installer 安裝 Redmine一鍵安裝工具集成了php服務&#xff0c;mysql服務。盡管安裝就好。 安裝完成后&#xff0c;在開始菜單&#xff0c;找到-----Bitnami Redmine Stack--------Bi…

Oracle創建假脫機文件,oracle – 在sqlplus中假脫機csv文件時的標頭格式

我需要使用sqlplus從Oracle中的表中調整csv.以下是所需的格式&#xff1a;"HOST_SITE_TX_ID","SITE_ID","SITETX_TX_ID","SITETX_HELP_ID""664436565","16","2195301","0""664700792&qu…

方便微信公眾號等手機網頁調試插件eruda和vConsole

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

HDU 3530Subsequence(單調隊列)

題意 題目鏈接 給出$n$個數&#xff0c;找出最長的區間&#xff0c;使得區間中最大數$-$最小數 $> m$ 且$< k$ Sol 考慮維護兩個單調隊列。 一個維護$1 - i$的最大值&#xff0c;一個維護$1 - i$的最小值。 至于兩個限制條件。 $<k$可以通過調整隊首來滿足 $>a$可以…

oracle權限培訓,Java培訓-ORACLE數據庫學習【2】用戶權限

查詢用戶擁有的權限&#xff1a;1.查看所有用戶&#xff1a;select *from dba_users;select *from all_users;select *from user_users; 2.查看用戶或角色系統權限(直接賦值給用戶或角色的系統權限)&#xff1a;select *from dba_sys_privs;select *from user_sys_privs; 3.查看…

linux 中文件夾的文件按照時間倒序或者升序排列

1&#xff0c;按照時間升序 命令:ls -lrt 詳細解釋: -l use a long listing format 以長列表方式顯示&#xff08;詳細信息方式&#xff09; -t sort by modification time 按修改時間排序&#xff08;最新的在最前面&#xff09; -r reverse order while sorti…

PHP中關于時間(戳)、時區、本地時間、UTC時間等的梳理

PHP中關于時間&#xff08;戳&#xff09;、時區、本地時間、UTC時間等的梳理 在PHP開發中&#xff0c;我們經常會在時間問題上被搞糊涂&#xff0c;比如我們希望顯示一個北京時間&#xff0c;但是當我們使用date函數進行輸出時&#xff0c;卻發現少了8個小時。幾乎所有的php猿…

WebServiceStudio.exe測試webservice接口工具

WebServiceStudio.exe測試webservice接口工具 下載鏈接 https://pan.baidu.com/s/1gf8ajS3 打開工具WebServiceStudio&#xff0c;如下填寫地址&#xff0c;點擊【Get】按鈕 會顯示出需要傳參的地方&#xff0c;在value中填寫xml參數 輸入完value值后&#xff0c;點擊【Invok…