W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
my.chooseLocation 是使用支付寶內(nèi)置地圖選擇地理位置的 API。
// 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;
}
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í)行)。 |
屬性 | 類型 | 描述 |
---|---|---|
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 是獲取用戶當(dāng)前的地理位置信息的 API。
// 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;
}
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í)行)。 |
屬性 | 類型 | 描述 |
---|---|---|
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)。 |
A:需要重新授權(quán),刪除小程序應(yīng)用后會將獲取定位的授權(quán)關(guān)系一起刪除。
my.openLocation 是使用支付寶內(nèi)置地圖查看位置的 API。
// 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,
})
}
})
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í)行)。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: