国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

cordova+vue+webapp使用html5獲取地理位置的方法

2019-11-19 11:13:27
字體:
來源:轉載
供稿:網友

1.在HTML5中使用Geolocation.getCurrentPosition()方法來獲取地理位置。

語法:

navigator.geolocation.getCurrentPosition(success, error, options)

參數:

  •  success: 成功得到位置信息時的回調函數,使用Position 對象作為唯一的參數。
  • error: 獲取位置信息失敗時的回調函數,使用 PositionError 對象作為唯一的參數,這是一個可選項。
  • options:一個可選的PositionOptions 對象,包含以下3個參數。
    • enableHighAccuracy 是一個Boolean值,用來表明應用是否使用其最高精度來表示結果,默認為false。
    • timeout 是一個正的long值,表明的是設備必須在多長時間(單位毫秒)內返回一個位置,默認是Infinity。
    • maximumAge 是一個正的long值,表明可以返回多長時間(即最長年齡,單位毫秒)內的可獲取的緩存位置。如果設置為 0,說明設備不能使用一個緩存位置,而且必須去獲取一個真實的當前位置。如果設置為 Infinity ,那么不管設置的最長年齡是多少,設備都必須返回一個緩存位置。默認值:0

2.success - 成功得到位置信息時的回調函數

navigator.geolocation.getCurrentPosition(function(position)) {  // 獲取成功時的的處理  //參數position是地理位置對象}

position中返回的信息如下圖:

  • accuracy 獲取到的緯度或者經度的精度(以米為單位)
  • altitude 當前地理位置的海撥高度(不能獲取為null)
  • altitudeAccurancy 獲取到的海撥高度的經度(以米為單位)
  • heading 設備移動的方向(以度為單位)
  • latitude 當前地理位置的緯度
  • longitude 當前地理位置的經度
  • speed 設備的前進速度(以米/秒為單位,不能獲取時為null)
  • timestamp 獲取地理位置信息時的時間

3.error - 獲取位置信息失敗時的回調函數

navigator.geolocation.getCurrentPosition(function(position){   // 獲取成功時的的處理;  //參數position是地理位置對象},function(error)) {  // 獲取失敗時的的處理;}

error中返回的信息如下圖

code屬性有以下值:

- 1 地理位置信息的獲取失敗,因為該頁面沒有獲取地理位置信息的權限。
- 2 地理位置獲取失敗,因為至少有一個內部位置源返回一個內部錯誤。
- 3 獲取地理位置超時,通過定義PositionOptions.timeout 來設置獲取地理位置的超時時長。

message 返回一個開發者可以理解的 DOMString 來描述錯誤的詳細信息。

4.使用Geolocation.getCurrentPosition()注意事項:

  1. 本地項目中在Chrome瀏覽器中運行時,無法獲取到經緯度信息,原因是Chrome已不再支持非安全域的
  2. 瀏覽器定位請求,只有在https下才可使用定位。在IE、Eage、Firefox下親測可以獲取的經緯度信息。獲取到的GPS經緯度信息在百度地圖展示位置會與實際位置不同,是因為百度對外接口的坐標系為BD09
  3. 坐標系,并不是GPS采集的真實經緯度,在使用百度地圖JavaScript API服務前,需先將非百度坐標通過坐標轉換接口轉換成百度坐標。(轉換方法詳見下文)

5.使用Geolocation.getCurrentPosition()獲取經緯度信息,并轉換為百度坐標并進行逆地址解析:

以Vue項目為例,首先根目錄index.html中引入百度API文件,如下圖:

獲取位置,標記marker并進行逆地址解析代碼如下:

    // 1 查詢當前位置信息    getPosition() {      navigator.geolocation.getCurrentPosition(this.getPositionSuccess, this.getPositionError, {"enableHighAccuracy": true, "timeout": 5000, "maximumAge": 5000})    },    // 1-1 查詢當前位置信息成功    getPositionSuccess(position) {      this.latitude = String(position.coords.latitude)      this.longitude = String(position.coords.longitude)      let ggPoint = new BMap.Point(this.longitude, this.latitude)      let pointArr = []      pointArr.push(ggPoint)      let convertor = new BMap.Convertor()      // 坐標轉換      convertor.translate(pointArr, 1, 5, this.translateCallback)    },    // 1-2 查詢當前位置信息失敗    getPositionError(error) {      this.$toast({        message: `獲取地理位置失敗請重試~`,        duration: 1000      })    },     // 坐標轉換回調    translateCallback(data) {      if (data.status === 0) {        // 在地圖上標注marker        let marker = new BMap.Marker(data.points[0])        map.addOverlay(marker)        map.panTo(data.points[0])        // 逆地址解析        let myGeo = new BMap.Geocoder()        let that = this        myGeo.getLocation(data.points[0], function(result){             if (result){            // 獲取逆地址解析結果            that.clockSite = result.address          }           })      }    },

坐標轉換convertor.translate()方法說明:

語法:

convertor.translate(coords, from, to, fn)

參數:

  • coords:需轉換的源坐標
  • from: 源坐標類型 詳見:[類型詳情][4]
  • to: 目標坐標類型 詳見:[類型詳情][5]
  • fn: 轉換結果回調

6.使用cordova+vue開發webapp中定位解決方法:

在cordova中安裝Geolocation插件后,方可在生成的app中獲取到地理位置信息,運行如下命令即可:

cordova plugin add cordova-plugin-geolocation

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜春市| 台湾省| 姚安县| 彩票| 启东市| 吉水县| 呼图壁县| 贡觉县| 江油市| 大兴区| 汝南县| 翼城县| 邻水| 新闻| 涟水县| 霍山县| 上高县| 宜丰县| 肇州县| 安义县| 平武县| 永顺县| 龙门县| 宁陵县| 黄山市| 汤原县| 灵武市| 大方县| 贵德县| 富民县| 凌源市| 尼玛县| 曲沃县| 青冈县| 昌都县| 安康市| 拉孜县| 偃师市| 肥西县| 邢台市| 民权县|