支付寶小程序API 位置

2020-09-15 10:53 更新

my.chooseLocation

簡介

my.chooseLocation 是使用支付寶內(nèi)置地圖選擇地理位置的 API。

使用限制

  • 暫無境外地圖數(shù)據(jù),在中國內(nèi)地(不含港澳臺)以外的地區(qū)可能無法正常調(diào)用此 API。
  • 僅支持高德地圖 style 與火星坐標(biāo)系。

掃碼體驗

mychooselocation.png

效果示例

選擇地理位置.gif

示例代碼

// API-DEMO page/API/choose-location/choose-location.json
{
    "defaultTitle": "選擇位置"
}
<!-- API-DEMO page/API/choose-location/choose-location.axml-->
<view class="page">
  <view class="page-section">
    <view class="page-section-demo">
      <text>經(jīng)度:</text>
      <input value="{{longitude}}"></input>
    </view>
    <view class="page-section-demo">
      <text>緯度:</text>
      <input value="{{latitude}}"></input>
    </view>
    <view class="page-section-demo">
      <text>位置名稱:</text>
      <input value="{{name}}"></input>
    </view>
    <view class="page-section-demo">
      <text>詳細(xì)位置:</text>
      <input value="{{address}}"></input>
    </view>    
    <view class="page-section-btns">
      <view onTap="chooseLocation">選擇位置</view>
    </view>
  </view>
</view>
// API-DEMO page/API/choose-location/choose-location.js
Page({
  data: {
    longitude: '120.126293',
    latitude: '30.274653',
    name: '黃龍萬科中心',
    address: '學(xué)院路77號',
  },
  chooseLocation() {
    var that = this
    my.chooseLocation({
         success:(res)=>{
          console.log(JSON.stringify(res))
          that.setData({
            longitude:res.longitude,
            latitude:res.latitude,
            name:res.name,
            address:res.address
          })
        },
        fail:(error)=>{
          my.alert({content: '調(diào)用失?。?+JSON.stringify(error), });
        },
    });
    },
})
/* API-DEMO page/API/choose-location/choose-location.acss */
.page-body-info {
  height: 250rpx;
}
.page-body-text-location {
  display: flex;
  font-size: 50rpx;
}
.page-body-text-location text {
  margin: 10rpx;
}
.page-section-location-text{
    color: #49a9ee;
}

入?yún)?/h4>

Object 類型,屬性如下:

屬性 類型 必填 描述
success Function 調(diào)用成功的回調(diào)函數(shù)。
fail Function 調(diào)用失敗的回調(diào)函數(shù)。
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)。

success 回調(diào)函數(shù)
屬性 類型 描述
name String 位置名稱。
address String 詳細(xì)地址。
latitude Number 緯度,浮點數(shù),范圍為-90~90,負(fù)數(shù)表示南緯。
longitude Number 經(jīng)度,浮點數(shù),范圍為-180~180,負(fù)數(shù)表示西經(jīng)。
provinceName String 省份名稱。
cityName String 城市名稱。

my.getLocation

簡介

my.getLocation 是獲取用戶當(dāng)前的地理位置信息的 API。

使用限制

  • 基礎(chǔ)庫 1.1.1 或更高版本。若版本較低,建議采取 兼容處理
  • 暫無境外地圖數(shù)據(jù),在中國內(nèi)地(不含港澳臺)以外的地區(qū)可能無法正常調(diào)用此 API。
  • 僅支持高德地圖 style 與火星坐標(biāo)系。

掃碼體驗

獲取用戶當(dāng)前的地理位置信息.jpeg

效果示例

獲取用戶當(dāng)前的地理位置.gif

示例代碼

// API-DEMO page/API/get-location/get-location.json
{
    "defaultTitle": "獲取位置"
}
<!-- API-DEMO page/API/get-location/get-location.axml-->
<view class="page">
  <view class="page-section">
    <view class="page-section-demo">
      <view>當(dāng)前位置經(jīng)緯度</view>
      <block a:if="{{hasLocation === false}}">
        <text>未獲取</text>
      </block>
      <block a:if="{{hasLocation === true}}">
        <view class="page-body-text-location">
          <text>E{{location.longitude[0]}}°{{location.longitude[1]}}′</text>
          <text>N{{location.latitude[0]}}°{{location.latitude[1]}}′</text>
        </view>
      </block>
    </view>


    <view class="page-section-btns">
      <view onTap="getLocation">獲取位置</view>
      <view onTap="clear">清空</view>
    </view>
  </view>
</view>
// API-DEMO page/API/get-location/format-location.js
function formatLocation(longitude, latitude) {
  longitude = Number(longitude).toFixed(2),
  latitude = Number(latitude).toFixed(2)


  return {
    longitude: longitude.toString().split('.'),
    latitude: latitude.toString().split('.')
  }
}


export default formatLocation
// API-DEMO page/API/get-location/get-location.js
import formatLocation from './format-location.js';


Page({
  data: {
    hasLocation: false,
  },
  getLocation() {
    var that = this;
    my.showLoading();
    my.getLocation({
      success(res) {
        my.hideLoading();
        console.log(res)
        that.setData({
          hasLocation: true,
          location: formatLocation(res.longitude, res.latitude)
        })
      },
      fail() {
        my.hideLoading();
        my.alert({ title: '定位失敗' });
      },
    })
  },
  clear() {
    this.setData({
      hasLocation: false
    })
  }
})
/* API-DEMO page/API/get-location/get-location.acss */
.page-body-info {
  height: 250rpx;
}
.page-body-text-small {
  font-size: 24rpx;
  color: #000;
  margin-bottom: 100rpx;
}
.page-body-text-location {
  display: flex;
  font-size: 50rpx;
}
.page-body-text-location text {
  margin: 10rpx;
}

入?yún)?/h4>

Object 類型,屬性如下:

屬性 類型 必填 描述
cacheTimeout Number 支付寶客戶端經(jīng)緯度定位緩存過期時間,單位為秒。默認(rèn) 30 秒(s)。使用緩存會加快定位速度,緩存過期會重新定位。
type Number 獲取經(jīng)緯度數(shù)據(jù)的類型。默認(rèn)值為 0。最低基礎(chǔ)庫版本限制為 1.1.1。0:獲取經(jīng)緯度。1:獲取經(jīng)緯度和詳細(xì)到區(qū)縣級別的逆地理編碼數(shù)據(jù)。2:獲取經(jīng)緯度和詳細(xì)到街道級別的逆地理編碼數(shù)據(jù),不推薦使用。(不推薦使用的原因:精度過高,接口返回的速度會變慢。)3:獲取經(jīng)緯度和詳細(xì)到POI級別的逆地理編碼數(shù)據(jù),不推薦使用。(不推薦使用的原因:精度過高,接口返回的速度會變慢。)
success Function 調(diào)用成功的回調(diào)函數(shù)。
fail Function 調(diào)用失敗的回調(diào)函數(shù)。
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)。

success 回調(diào)函數(shù)
屬性 類型 描述
longitude String 經(jīng)度
latitude String 緯度
accuracy String 精確度,單位米 (m)。
horizontalAccuracy String 水平精確度,單位為米 (m)。
country String 國家(type>0生效)。最低基礎(chǔ)庫版本限制為 1.1.1。
countryCode String 國家編號 (type>0生效)。最低基礎(chǔ)庫版本限制為 1.1.1。
province String 省份(type>0生效)。最低基礎(chǔ)庫版本限制為 1.1.1。
city String 城市(type>0生效)。最低基礎(chǔ)庫版本限制為 1.1.1。
cityAdcode String 城市級別的地區(qū)代碼(type>0生效)。最低基礎(chǔ)庫版本限制為 1.1.1。
district String 區(qū)縣(type>0生效)。最低基礎(chǔ)庫版本限制為 1.1.1。
districtAdcode String 區(qū)縣級別的地區(qū)代碼(type>0生效)。最低基礎(chǔ)庫版本限制為 1.1.1。
streetNumber Object 需要街道級別逆地理的才會有的字段,街道門牌信息,結(jié)構(gòu)是:{street, number} (type>1生效)。最低基礎(chǔ)庫版本限制為 1.1.1。
pois Array 需要 POI (Point of Interest,興趣點,在地理信息系統(tǒng)中,一個 POI 可以是一棟房子、一個商鋪、一個郵筒、一個公交站等)級別的地理位置才會有的字段,定位點附近的 POI 信息,結(jié)構(gòu)是:{name, address}(type>2生效)。最低基礎(chǔ)庫版本限制為 1.1.1。

錯誤碼

錯誤碼 描述 解決方案
11 請確認(rèn)定位相關(guān)權(quán)限已開啟。 提示用戶確認(rèn)手機(jī)是否已給支付寶 APP 獲取定位權(quán)限。
12 網(wǎng)絡(luò)異常,請稍后再試。 提示用戶檢查當(dāng)前網(wǎng)絡(luò)。
13 定位失敗,請稍后再試。 提示用戶再次嘗試。
14 業(yè)務(wù)定位超時。 提示用戶再次嘗試。
2001 用戶拒絕給小程序授權(quán)。 提示用戶接受小程序授權(quán)。

常見問題 FAQ

Q:my.getLocation 第一次允許授權(quán)后刪除小程序應(yīng)用,重新打開會需要重新授權(quán)嗎?

A:需要重新授權(quán),刪除小程序應(yīng)用后會將獲取定位的授權(quán)關(guān)系一起刪除。

my.openLocation

簡介

my.openLocation 是使用支付寶內(nèi)置地圖查看位置的 API。

使用限制

  • 暫無境外地圖數(shù)據(jù),在中國內(nèi)地(不含港澳臺)以外的地區(qū)可能無法正常調(diào)用此 API。
  • 僅支持高德地圖 style 與火星坐標(biāo)系。

掃碼體驗

支付寶查看位置.jpeg

效果示例

openlocation.gif

示例代碼

// API-DEMO page/API/open-location/open-location.json
{
    "defaultTitle": "查看位置"
}
<!-- API-DEMO page/API/open-location/open-location.axml-->
<view class="page">
  <view class="page-section">
    <view class="page-section-demo">
      <text>經(jīng)度</text>
      <input type="text" disabled="{{true}}" value="{{longitude}}" name="longitude"></input>
    </view>
    <view class="page-section-demo">
      <text>緯度</text>
      <input type="text" disabled="{{true}}"  value="{{latitude}}" name="latitude"></input>
    </view>
    <view class="page-section-demo">
      <text>位置名稱</text>
      <input type="text" disabled="{{true}}"  value="{{name}}" name="name"></input>
    </view>
    <view class="page-section-demo">
      <text>詳細(xì)位置</text>
      <input type="text" disabled="{{true}}"  value="{{address}}" name="address"></input>
    </view>
    <view class="page-section-btns">
      <view type="primary" formType="submit" onTap="openLocation">查看位置</view>
    </view>
  </view>
</view>
// API-DEMO page/API/open-location/open-location.js
Page({
  data: {
    longitude: '120.126293',
    latitude: '30.274653',
    name: '黃龍萬科中心',
    address: '學(xué)院路77號',
  },


  openLocation() {
    my.openLocation({
      longitude: this.data.longitude,
      latitude: this.data.latitude,
      name: this.data.name,
      address: this.data.address,
    })
  }
})

入?yún)?/h4>

Object 類型,屬性如下:

屬性 類型 必填 描述
longitude String 經(jīng)度。
latitude String 緯度。
name String 位置名稱。
address String 地址的詳細(xì)說明。
scale Number 縮放比例,范圍 3~19,默認(rèn)為 15。
success Function 調(diào)用成功的回調(diào)函數(shù)。
fail Function 調(diào)用失敗的回調(diào)函數(shù)。
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號