JSAPI

  • Since 10.0.18

    getCurrentLocation

    新接口 getCurrentLocation 获取当前设备所在的地理位置信息,包括经纬度、准确度、逆地理编码、POI地址等,与此前 getLocation 老接口的参数和错误码定义 不 兼 容 !

    使用方法

    AlipayJSBridge.call('getCurrentLocation', {
      cacheTimeout, requestType, timeout, bizType 
    }, function (result) {
      alert(JSON.stringify(result));
    });
    

    代码演示

    获取用户地址经纬度

    <h1>点击获取用户所在地经纬度</h1>
    <a href="#" class="btn read">点击获取定位信息</a>
    <script>
    function ready(callback) {
      // 如果jsbridge已经注入则直接调用
      if (window.AlipayJSBridge) {
        callback && callback();
      } else {
        // 如果没有注入则监听注入的事件
        document.addEventListener('AlipayJSBridgeReady', callback, false);
      }
    }
    ready(function() {
      document.querySelector('.read').addEventListener('click', function() {
        AlipayJSBridge.call('getCurrentLocation', { bizType: '$s' }, function(result) {
          if (result.error) {
            alert(result.errorMessage);
            return;
          }
          alert(JSON.stringify(result));
        });
      });
    });
    </script>
    

    获取用户详细地理位置信息

    <h1>点击获取详细地理位置信息</h1>
    <a href="#" class="btn read">点击获取详细地理位置信息</a>
    <script>
    function ready(callback) {
      // 如果jsbridge已经注入则直接调用
      if (window.AlipayJSBridge) {
        callback && callback();
      } else {
        // 如果没有注入则监听注入的事件
        document.addEventListener('AlipayJSBridgeReady', callback, false);
      }
    }
    ready(function() {
      document.querySelector('.read').addEventListener('click', function() {
        AlipayJSBridge.call('getCurrentLocation', { requestType: 0, bizType: %s }, function(result) {
          if (result.error) {
            alert(result.errorMessage);
            return;
          }
          alert(JSON.stringify(result));
        });
      });
    });
    </script>
    

    参数说明

    入参

    名称类型描述必选缺省值最小版本
    bizTypestring业务唯一标识,定义一个唯一串,都小写(请 @学涯 进行报备)Y10.0.18
    requestTypeint0, 只获取经纬度
    1, 获取经纬度和详细到区县级别的逆地理
    2, 获取经纬度和详细到街道级别的逆地理 请 @民华 报备调用量级
    3, 获取经纬度和详细到POI级别的逆地理 请 @民华 报备调用量级
    N010.0.18
    cacheTimeoutint可接受的缓存时间,单位秒N30s10.0.18
    timeoutint超时时间,单位秒,两平台定位机制不同,缺省值也不同Nandroid: 10s
    ios: 2s
    10.0.18
    fnfunction定位结果的回调函数N10.0.18

    出参

    回调函数 fn 的入参对象(其中省市等行政区划代码是蚂蚁统一的,这部分数据目前是高德16年Q4的数据,蚂蚁这里会不定期更新高德数据)

    名称类型描述最小版本
    errorint11, 请确认定位相关权限已开启,可调用(showAuthGuide)接口引导用户开启权限,代码示例在页面下方
    12, 网络异常,请稍后再试
    13, 定位失败,请稍后再试
    14, 业务定位超时
    10.0.18
    errorMessagestring默认的错误文案,使用前需PD确认10.0.18
    latitudedouble纬度,GCJ02 标准,适用国内地图10.0.18
    longitudedouble经度,GCJ02 标准,适用国内地图10.0.18
    accuracyfloat准确度,单位m10.0.18
    countrystring国家名称 (需匹配requestType)10.0.18
    countryCodestring国家编号 (需匹配requestType)10.0.18
    provincestring省份名称 (需匹配requestType)10.0.18
    citystring城市名称 (需匹配requestType)
    建议 result.city ? result.city : result.province
    10.0.18
    cityAdcodestring城市adcode (需匹配requestType)10.0.18
    districtstring区县名称 (需匹配requestType)10.0.18
    districtAdcodestring区县adcode (需匹配requestType)10.0.18
    streetNumberobject街道门牌信息 (需匹配requestType),结构 {street, number}10.0.18
    poisarray附近POI信息 (需匹配requestType),结构 [{name, address}]10.0.18
    highAccuracyClosedbool用户是否关闭关精度定位权限(仅iOS系统,iOS14+),默认不返回该字段,关闭则置为true返回10.1.99

    errorcode返回11,接入权限引导代码示例

    以只获取经纬度为例(demo仅供参考)

    <h1>点击获取用户所在地经纬度</h1>
    <a href="#" class="btn read">点击获取定位信息</a>
    <script>
    function ready(callback) {
      // 如果jsbridge已经注入则直接调用
      if (window.AlipayJSBridge) {
        callback && callback();
      } else {
        // 如果没有注入则监听注入的事件
        document.addEventListener('AlipayJSBridgeReady', callback, false);
      }
    }
    ready(function() {
      document.querySelector('.read').addEventListener('click', function() {
        AlipayJSBridge.call('getCurrentLocation', { bizType: '$s' }, function(result) {
          if (result.error) {
              if (result.error == 11) {
                AlipayJSBridge.call('showAuthGuide', { bizType: '$s', authType: 'LBS' }, function(result) {
                  if (result.error) {
                    alert(result.errorMessage);
                    return;
                  }
                  alert(JSON.stringify(result));
                });
            } else {
                alert(result.errorMessage);
            }
            return;
          }
          alert(JSON.stringify(result));
        });
      });
    });
    </script>
    

    注意事项

    • 入参的 bizType 必填
    • 暂不能提供省份信息,有需求可沟通
    • cityAdcode, districtAdcode同中国标准身份证号前六位地区码
    • 若使用场景需要轮询调用getCurrentLocation,建议接入持续定位(startContinuousLocation)

    与老接口 getLocation 不同之处

    • getLocation 是高德逆地理,getCurrentLocation 是蚂蚁逆地理,与蚂蚁域后端系统匹配。
    • getLocation 的 adcode 是区县级别,getCurrentLocation 增加 cityAdcode 城市级别 和 districtAdcode 区县级别,去掉了含义模糊的 adcode。
    • getLocation 的 citycode 在蚂蚁域内无法匹配,故在 getCurrentLocation 中去掉了,另增加 cityAdcode 匹配蚂蚁域。