全部产品

位置

更新时间:2020-08-06 15:38:51

my.chooseLocation

该接口用于使用内置地图选择地理位置。

  • 在 Android 客户端使用此 API 时,需要将申请获得的高德 key 加到 AndroidManifest,详情参见 申请高德 Key
  • 在 iOS 端使用此 API 时,需要在 beforeDidFinishLaunchingWithOptions 方法中设置高德定位的 key,所需代码如下所示。请参考 获取 Key 文档以获得高德定位的 Key。
    1. [APMapKeySetting getInstance].apiKey = @"高德定位的 Key"
说明:暂无境外地图数据,在中国内地(不含港澳台)以外的地区可能无法正常调用此 API。

效果示例

chooselocation

代码示例

  1. // API-DEMO page/API/choose-location/choose-location.json
  2. {
  3. "defaultTitle": "选择位置"
  4. }
  1. <!-- API-DEMO page/API/choose-location/choose-location.axml-->
  2. <view class="page">
  3. <view class="page-section">
  4. <view class="page-section-demo">
  5. <text>经度:</text>
  6. <input value="{{longitude}}"></input>
  7. </view>
  8. <view class="page-section-demo">
  9. <text>纬度:</text>
  10. <input value="{{latitude}}"></input>
  11. </view>
  12. <view class="page-section-demo">
  13. <text>位置名称:</text>
  14. <input value="{{name}}"></input>
  15. </view>
  16. <view class="page-section-demo">
  17. <text>详细位置:</text>
  18. <input value="{{address}}"></input>
  19. </view>
  20. <view class="page-section-btns">
  21. <view onTap="chooseLocation">选择位置</view>
  22. </view>
  23. </view>
  24. </view>
  1. // API-DEMO page/API/choose-location/choose-location.js
  2. Page({
  3. data: {
  4. longitude: '120.126293',
  5. latitude: '30.274653',
  6. name: '黄龙万科中心',
  7. address: '学院路77号',
  8. },
  9. chooseLocation() {
  10. var that = this
  11. my.chooseLocation({
  12. success:(res)=>{
  13. console.log(JSON.stringify(res))
  14. that.setData({
  15. longitude:res.longitude,
  16. latitude:res.latitude,
  17. name:res.name,
  18. address:res.address
  19. })
  20. },
  21. fail:(error)=>{
  22. my.alert({content: '调用失败:'+JSON.stringify(error), });
  23. },
  24. });
  25. },
  26. })
  1. /* API-DEMO page/API/choose-location/choose-location.acss */
  2. .page-body-info {
  3. height: 250rpx;
  4. }
  5. .page-body-text-location {
  6. display: flex;
  7. font-size: 50rpx;
  8. }
  9. .page-body-text-location text {
  10. margin: 10rpx;
  11. }
  12. .page-section-location-text{
  13. color: #49a9ee;
  14. }

入参

Object 类型,属性如下:

属性 类型 必填 描述
success Function 调用成功的回调函数。
fail Function 调用失败的回调函数。
complete Function 调用结束的回调函数(调用成功、失败都会执行)。

success 回调函数

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

属性 类型 描述
name String 位置名称。
address String 详细地址。
latitude Number 纬度,浮点数,范围为-90~90,负数表示南纬。
longitude Number 经度,浮点数,范围为-180~180,负数表示西经。

my.getLocation(OBJECT)

该接口用于获取用户当前的地理位置信息。

在 iOS 端使用此 API 时,若要获取逆地理信息,需要在 beforeDidFinishLaunchingWithOptions 方法中设置高德定位的 key,所需代码如下所示。请参考 获取 Key 文档以获得高德定位的 Key。

  1. [LBSmPaaSAdaptor sharedInstance].shouldAMapRegeoWhenLBSFailed = YES;
  2. [AMapServices sharedServices].apiKey = @"高德定位的 Key"
说明
  • 暂无境外地图数据,在中国内地(不含港澳台)以外的地区可能无法正常调用此 API。
  • 基础库 1.1.1 及以上版本支持该接口,低版本需做兼容处理,操作参见 小程序基础库说明

入参

名称
类型
必填
描述
最低版本
cacheTimeout
Number
mPaaS 客户端经纬度定位缓存过期时间,单位为秒。默认为 30s。使用缓存会加快定位速度,缓存过期会重新定位。
type
Number
获取经纬度数据的类型。
0:默认,获取经纬度
1:获取经纬度和详细到区县级别的逆地理编码数据
2:获取经纬度和详细到街道级别的逆地理编码数据,不推荐使用
3:获取经纬度和详细到 POI 级别的逆地理编码数据,不推荐使用
success
Function
调用成功的回调函数
fail
Function
调用失败的回调函数
complete
Function
调用结束的回调函数(调用成功、失败都会执行)

success 返回值

名称
类型
描述
最低版本
longitude
String
经度
latitude
String
纬度
accuracy
String
精确度,单位为 m
horizontalAccuracy
String
水平精确度,单位为 m
country
String
国家(type>0 生效)
countryCode
String
国家编号(type>0 生效)
province
String
省份(type>0 生效)
city
String
城市(type>0 生效)
cityAdcode
String
城市级别的地区代码(type>0 生效)
district
String
区县(type>0 生效)
districtAdcode
String
区县级别的地区代码(type>0 生效)
streetNumber
Object
需要街道级别逆地理编码数据时,才会返回该字段。街道门牌信息,结构是:{street, number} (type>1 生效)
pois
array
需要 POI 级别逆地理编码数据时,才会返回该字段。定位点附近的 POI 信息,结构是:{name, address}(type>2 生效)

错误码

错误码 描述 解决方案
11 请确认定位相关权限已开启 提示用户打开定位权限
12 网络异常,请稍后再试 提示用户检查当前网络
13 定位失败,请稍后再试 提示用户再次尝试
14 业务定位超时 提示用户再次尝试
2001 用户拒绝给小程序授权。 提示用户接受小程序授权

代码示例

  1. my.getLocation({
  2. success(res) {
  3. my.hideLoading();
  4. console.log(res)
  5. that.setData({
  6. hasLocation: true,
  7. location: formatLocation(res.longitude, res.latitude)
  8. })
  9. },
  10. fail() {
  11. my.hideLoading();
  12. my.alert({ title: '定位失败' });
  13. },
  14. })

常见问题

  • Q:my.getLocation 第一次允许授权后删除小程序应用,重新打开会需要重新授权吗?
    A:需要重新授权,删除小程序应用后会将获取定位的授权关系一起删除。

my.openLocation

该接口用于使用 mPaaS 小程序内置地图查看位置。

入参

名称 类型 必填 描述
longitude String 经度
latitude String 纬度
name String 位置名称
address String 地址的详细说明
scale Number 缩放比例,范围 3~19,默认为 15
success Function 调用成功的回调函数
fail Function 调用失败的回调函数
complete Function 调用结束的回调函数(调用成功、失败都会执行)

代码示例

  1. // API-DEMO page/API/open-location/open-location.json
  2. {
  3. "defaultTitle": "查看位置"
  4. }
  1. <!-- API-DEMO page/API/open-location/open-location.axml-->
  2. <view class="page">
  3. <view class="page-section">
  4. <view class="page-section-demo">
  5. <text>经度</text>
  6. <input type="text" disabled="{{true}}" value="{{longitude}}" name="longitude"></input>
  7. </view>
  8. <view class="page-section-demo">
  9. <text>纬度</text>
  10. <input type="text" disabled="{{true}}" value="{{latitude}}" name="latitude"></input>
  11. </view>
  12. <view class="page-section-demo">
  13. <text>位置名称</text>
  14. <input type="text" disabled="{{true}}" value="{{name}}" name="name"></input>
  15. </view>
  16. <view class="page-section-demo">
  17. <text>详细位置</text>
  18. <input type="text" disabled="{{true}}" value="{{address}}" name="address"></input>
  19. </view>
  20. <view class="page-section-btns">
  21. <view type="primary" formType="submit" onTap="openLocation">查看位置</view>
  22. </view>
  23. </view>
  24. </view>
  1. // API-DEMO page/API/open-location/open-location.js
  2. Page({
  3. data: {
  4. longitude: '120.126293',
  5. latitude: '30.274653',
  6. name: '黄龙万科中心',
  7. address: '学院路77号',
  8. },
  9. openLocation() {
  10. my.openLocation({
  11. longitude: this.data.longitude,
  12. latitude: this.data.latitude,
  13. name: this.data.name,
  14. address: this.data.address,
  15. })
  16. }
  17. })