W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在工具和真機中的實現(xiàn)有區(qū)別,詳見 API 實現(xiàn)差異。
解釋: 獲取當前的地理位置、速度。當用戶離開智能小程序后,此接口無法調用。使用該 API 需通過獲取用戶授權設置申請授權后方可對用戶發(fā)起授權申請,使用 permission 對獲取位置信息的用途進行說明,可在 swan.authorize 中查看相關錯誤碼信息。
Object object
屬性名 | 類型 | 必填 | 默認值 | 說明 |
---|---|---|---|---|
type | String | 否 | wgs84 | 返回 gps 坐標,可選 gcj02 。 wgs84 返回 gps 坐標, gcj02 返回火星坐標, gcj02 比 wgs84 更為精確,所以返回可用于傳入 swan.openLocation 的坐標 |
altitude | Boolean | 否 | 傳入 true 會返回高度信息,獲取高度需要較高精度且需要打開 gps ,會很耗時,默認沒有用 gps | |
success | Function | 否 | 接口調用成功的回調函數(shù),返回內容詳見返回參數(shù)說明 | |
fail | Function | 否 | 接口調用失敗的回調函數(shù) | |
complete | Function | 否 | 接口調用結束的回調函數(shù)(調用成功、失敗都會執(zhí)行) |
參數(shù) | 參數(shù)類型 | 說明 |
---|---|---|
latitude | Number | 緯度,浮點數(shù),范圍為 -90~90 ,負數(shù)表示南緯 |
longitude | Number | 經(jīng)度,浮點數(shù),范圍為 -180~180 ,負數(shù)表示西經(jīng) |
speed | Number | 速度,浮點數(shù),單位 m/s |
accuracy | Number | 位置的精確度 |
altitude | Number | 高度,單位 m |
verticalAccuracy | Number | 垂直精度,單位 m(Android 無法獲取,返回 0) |
horizontalAccuracy | Number | 水平精度,單位 m |
street | String | 街道名稱 |
cityCode | String | 城市編碼,更新的行政區(qū)域信息數(shù)據(jù)請參考行政區(qū)域數(shù)據(jù)更新映射關系表 |
city | String | 城市名稱 |
country | String | 國家 |
countryCode | String | 國家代碼 |
province | String | 省份 |
streetNumber | String | 街道號碼 |
district | String | 區(qū) |
<view class="wrap">
<view class="card-area">
<view class="list-area border-bottom" s-for="item in infoList">
<view class="list-item-key-4">{{item.chineseName}}}</view>
<view class="list-item-value">{{item.value}}</view>
</view>
</view>
<view class="swan-security-padding-bottom flex-button">
<button type="primary" bindtap="getLocation">點擊獲取位置信息</button>
</view>
</view>
Page({
data: {
infoList: [{
chineseName: '精確度',
engName: 'accuracy',
value: ''
}, {
chineseName: '高度',
engName: 'altitude',
value: ''
}, {
chineseName: '城市名稱',
engName: 'city',
value: ''
}, {
chineseName: '城市編碼',
engName: 'cityCode',
value: ''
}, {
chineseName: '國家',
engName: 'country',
value: ''
}, {
chineseName: '國家代碼',
engName: 'countryCode',
value: ''
}, {
chineseName: '區(qū)',
engName: 'district',
value: ''
}, {
chineseName: '水平精度',
engName: 'horizontalAccuracy',
value: ''
}, {
chineseName: '緯度',
engName: 'latitude',
value: ''
}, {
chineseName: '經(jīng)度',
engName: 'longitude',
value: ''
}, {
chineseName: '省份',
engName: 'province',
value: ''
}, {
chineseName: '速度',
engName: 'speed',
value: ''
}, {
chineseName: '街道名稱',
engName: 'street',
value: ''
}, {
chineseName: '街道號碼',
engName: 'streetNumber',
value: ''
}, {
chineseName: '垂直精度',
engName: 'verticalAccuracy',
value: ''
}]
},
onShow() {
let infoList = this.getData('infoList');
for (var i = 0; i < infoList.length; i++) {
infoList[i].value = '';
}
this.setData({
infoList
});
},
getLocation(e) {
swan.getLocation({
type: 'gcj02',
altitude: true,
success: res => {
console.log('getLocation success', res);
let infoList = this.getData('infoList');
for (var i = 0; i < infoList.length; i++) {
const engName = infoList[i].engName;
console.log('engName', res[engName]);
if (res[engName] === '' || res[engName] === 0 || res[engName] === '0') {
infoList[i].value = '暫無';
}
else {
engName === 'latitude' || engName === 'longitude'
? infoList[i].value = this.formatLocation(res[engName]) + '′'
: infoList[i].value = res[engName];
}
}
this.setData({
infoList
});
},
fail: err => {
swan.showToast({
title: '獲取失敗,請檢查位置授權是否開啟',
icon: 'none'
});
}
});
},
formatLocation(data) {
return data.toFixed(2).replace('.', '°');
}
});
同一位置下 type 屬性為 wgs84 :
同一位置下 type 屬性為 gcj02 :
Page({
getLocation() {
swan.getLocation({
type: 'gcj02',
altitude: true,
success: res => {
console.log('success', res);
swan.openLocation({
latitude: res.latitude,
longitude: res.longitude,
success: res => {
console.log('openLocation success', res);
},
fail: err => {
console.log('openLocation fail', err);
}
});
},
fail: err => {
swan.showToast({title: '獲取失敗'});
}
});
},
});
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: