• 下载
  • 社区

my.getLocation

版本要求:支持基础库 1.1.1 及以上版本。


获取用户当前的地理位置信息。


扫码体验

获取用户当前的地理位置信息.jpeg


效果示例

获取用户当前的地理位置.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>当前位置经纬度</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

支付宝客户端经纬度定位缓存过期时间,单位秒。默认 30s。使用缓存会加快定位速度,缓存过期会重新定位。


type

Number

0:默认值为 0,获取经纬度。1:获取经纬度和详细到区县级别的逆地理编码数据。2:获取经纬度和详细到街道级别的逆地理编码数据,不推荐使用。3:获取经纬度和详细到POI级别的逆地理编码数据,不推荐使用。

(不推荐使用的原因:精度过高,接口返回的速度会变慢。)

1.1.1

success

Function

调用成功的回调函数。


fail

Function

调用失败的回调函数。


complete

Function

调用结束的回调函数(调用成功、失败都会执行)。



success 回调函数

入参为 Object 类型,属性如下:

属性

类型

描述

最低版本

longitude

String

经度


latitude

String

纬度


accuracy

String

精确度,单位m


horizontalAccuracy

String

水平精确度,单位m


country

String

国家(type>0生效)

1.1.1

countryCode

String

国家编号 (type>0生效)

1.1.1

province

String

省份(type>0生效)

1.1.1

city

String

城市(type>0生效)

1.1.1

cityAdcode

String

城市级别的地区代码(type>0生效)

1.1.1

district

String

区县(type>0生效)

1.1.1

districtAdcode

String

区县级别的地区代码(type>0生效)

1.1.1

streetNumber

Object

需要街道级别逆地理的才会有的字段,街道门牌信息,结构是:{street, number} (type>1生效)

1.1.1

pois

array

需要 POI (Point of Interest,兴趣点,在地理信息系统中,一个 POI 可以是一栋房子、一个商铺、一个邮筒、一个公交站等)级别的地理位置才会有的字段,定位点附近的 POI 信息,结构是:{name, address}(type>2生效)

1.1.1


结果码

结果码

描述

解决方案

11

请确认定位相关权限已开启。

提示用户确认手机是否已给支付宝 APP 获取定位权限。

12

网络异常,请稍后再试。

提示用户检查当前网络。

13

定位失败,请稍后再试。

提示用户再次尝试。

14

业务定位超时。

提示用户再次尝试。

2001

用户拒绝给小程序授权。

提示用户接受小程序授权。