日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/11 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的使用方法:

?

?
  • /**

  • * @param geolocationSuccess 定位成功的回調函數

  • * @param geolocationError 定位失敗的回調函數

  • * @param [geolocationOptions]設置對象

  • */

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


  • 簡單的使用示例:

    ?

    ?

    ?
  • // 定位成功的回調函數

  • var onSuccess = function(position) {

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

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

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

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

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

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

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

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

  • };

  • ?
  • // 定位失敗的回調函數

  • function onError(error) {

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

  • }

  • ?
  • navigator.geolocation.getCurrentPosition(onSuccess, onError);


  • ?

    ?

    為什么獲取到了坐標了還需要解密?

    百度api對此進行了解釋,鏈接:http://lbsyun.baidu.com/index.php?title=open/question

    那么說明了一點:坐標都是經過加密處理的

    如果直接使用navigator.geolocation.getCurrentPosition獲取到的坐標信息,是加密的坐標信息,直接使用的話,會明顯出現偏差,偏差范圍大概在幾公里左右!!!那么跟沒定位有什么區別╮(╯_╰)╭

    ?

    這里使用百度的api進行解密:

    ?

    ?
  • /**

  • * 真實經緯度轉成百度坐標

  • * @param gpsPoint 傳入百度BMap對象

  • * @param 0 0:代表GPS

  • * @param translateCallback 真實坐標轉換成百度坐標的回調函數

  • */

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


  • ?

    ?

    完整示例:

    ●注意:使用百度地圖api,首要需要到百度api官網申請百度地圖密鑰

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

    1、在頁面引入js

    HTML:

    ?

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

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

  • ?

    ?

    2、這里已經已經封裝好成函數,使用可以直接復制

    js:

    ?
  • function getlocation() {

  • if (window.navigator.geolocation) {

  • //設置參數

  • var options = {

  • enableHighAccuracy: true,

  • timeout: 10000,

  • };

  • ?
  • window.navigator.geolocation.getCurrentPosition(handleSuccess, handleError, options);

  • } else {

  • //alert("無法獲取地理位置信息");

  • }

  • }

  • ?
  • /**

  • * 執行window.navigator.geolocation.getCurrentPosition()函數后成功的回調

  • * @param position 返回一個真實坐標對象position

  • */

  • function handleSuccess(position){

  • var lng = position.coords.longitude; //經度

  • var lat = position.coords.latitude; //緯度

  • ?
  • //通過百度地圖api對象封裝真實的經緯度

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

  • ?
  • / **

  • * 真實坐標轉換成百度坐標的回調函數

  • * 通過百度坐標得到地址描述

  • * @param point 回調百度坐標對象point

  • */

  • translateCallback = function (point){

  • var myGeo = new BMap.Geocoder();

  • // 根據百度坐標得到地址描述

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

  • if (result){

  • // PS:改成你需要執行的函數

  • alert(result.address);

  • }

  • else{

  • // PS:改成你需要執行的函數

  • alert("定位失敗,請重新定位");

  • }

  • });

  • }

  • ?
  • setTimeout(function(){

  • /**

  • * 真實經緯度轉成百度坐標

  • * @param gpsPoint 傳入百度BMap對象

  • * @param 0 0:代表GPS,也可以是2:google坐標

  • * @param translateCallback 真實坐標轉換成百度坐標的回調函數

  • */

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

  • }, 2000);

  • }

  • ?
  • ?
  • /* 失敗的回調 */

  • function handleError(error){

  • // PS:改成你需要執行的函數

  • alert("獲取位置信息失敗,請重新定位");

  • }


  • ?

    ?

    總結

    以上是生活随笔為你收集整理的ios如何获取gps坐标(定位第二节)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。