JSAPI

  • Since 8.1

    getLocation

    该接口已经不建议使用, 请调用新接口getCurrentLocation
    getLocation用来获取用户当前的地理位置信息

    使用方法

    AlipayJSBridge.call('getLocation', function (result) {
      alert(JSON.stringify(result));
    });
    

    代码演示

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

    <h1>点击获取详细地理位置信息</h1>
    <p>一般情况下还会返回周围兴趣点</p>
    <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('getLocation', 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('getLocation', { requestType: 2 }, function(result) {
          if (result.error) {
            alert(result.errorMessage);
            return;
          }
    
          alert(JSON.stringify(result));
        });
      });
    });
    </script>
    

    API

    AlipayJSBridge.call('getLocation', {
      cacheTimeout, requestType, reGeocodeServiceType, timeout, horizontalAccuracy
    }, fn)
    
    名称类型描述必选默认值版本
    cacheTimeoutfloat钱包经纬度定位缓存过期时间,单位秒,例如:钱包上一次定位时间是10:00:00,当前调用cacheTimeout=5,当前时间是10:00:06,则判断缓存过期不可用,会重新定位N30s9.0
    requestTypeint0:详细逆地理编码,带周边信息(当使用MobileLBS服务时,当遇到流量巨大时可能会做降级处理,届时可能没有poi周边信息)
    1:逆地理编码到城市
    2:仅获取经纬度
    N09.0.1
    timeoutfloat定位超时失败回调时间,单位秒N10s9.0.1
    horizontalAccuracyfloat定位精度,默认是不限制精度。当超过误差精度时,会继续等待位置更新,直到超时,超时处理使用最后一次定位的经纬度。N9.0.1
    fnfunction定位完成后被调用的回调函数N9.0.1

    出参

    回调函数带入的参数result: {error, extError, latitude, longitude, country, countryCode, city, province, citycode, adcode, streetNumber, pois}

    名称类型描述版本
    errorint错误码(12:请确认定位相关权限已开启; 13:定位失败,请稍后再试; 14:网络异常,请稍后再试; 15:定位失败,请稍后再试)10.0.18
    extErrorint扩展错误码(android上由高德SDK导出)8.6
    latitudedouble纬度8.1
    longitudedouble经度8.1
    countrystring国家(requestType为0,1时生效)9.6.6
    countryCodestring国家编号(requestType为0,1时生效)9.6.6
    citystring城市,建议result.city?result.city:result.province这样来获取city)8.1
    provincestring省份8.1
    citycodestring城市编码8.2
    adcodestring区域编码8.2
    streetNumberobject门牌信息,结构是:{street, number}8.2
    poisarray周边兴趣点8.2

    使用注意

    • getLocation不能获取provinceCode。
    • getLocation不能获取district信息,比如 中国浙江省杭州市西湖区万塘路18号 这个地址,getLocation不会返回西湖区这个信息。