新接口 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>
名称 | 类型 | 描述 | 必选 | 缺省值 | 最小版本 |
---|---|---|---|---|---|
bizType | string | 业务唯一标识,定义一个唯一串,都小写(请 @学涯 进行报备) | Y | 10.0.18 | |
requestType | int | 0, 只获取经纬度 1, 获取经纬度和详细到区县级别的逆地理 2, 获取经纬度和详细到街道级别的逆地理 请 @民华 报备调用量级 3, 获取经纬度和详细到POI级别的逆地理 请 @民华 报备调用量级 | N | 0 | 10.0.18 |
cacheTimeout | int | 可接受的缓存时间,单位秒 | N | 30s | 10.0.18 |
timeout | int | 超时时间,单位秒,两平台定位机制不同,缺省值也不同 | N | android: 10s ios: 2s | 10.0.18 |
fn | function | 定位结果的回调函数 | N | 10.0.18 |
回调函数 fn 的入参对象(其中省市等行政区划代码是蚂蚁统一的,这部分数据目前是高德16年Q4的数据,蚂蚁这里会不定期更新高德数据)
名称 | 类型 | 描述 | 最小版本 |
---|---|---|---|
error | int | 11, 请确认定位相关权限已开启,可调用(showAuthGuide)接口引导用户开启权限,代码示例在页面下方 12, 网络异常,请稍后再试 13, 定位失败,请稍后再试 14, 业务定位超时 | 10.0.18 |
errorMessage | string | 默认的错误文案,使用前需PD确认 | 10.0.18 |
latitude | double | 纬度,GCJ02 标准,适用国内地图 | 10.0.18 |
longitude | double | 经度,GCJ02 标准,适用国内地图 | 10.0.18 |
accuracy | float | 准确度,单位m | 10.0.18 |
country | string | 国家名称 (需匹配requestType) | 10.0.18 |
countryCode | string | 国家编号 (需匹配requestType) | 10.0.18 |
province | string | 省份名称 (需匹配requestType) | 10.0.18 |
city | string | 城市名称 (需匹配requestType) 建议 result.city ? result.city : result.province | 10.0.18 |
cityAdcode | string | 城市adcode (需匹配requestType) | 10.0.18 |
district | string | 区县名称 (需匹配requestType) | 10.0.18 |
districtAdcode | string | 区县adcode (需匹配requestType) | 10.0.18 |
streetNumber | object | 街道门牌信息 (需匹配requestType),结构 {street, number} | 10.0.18 |
pois | array | 附近POI信息 (需匹配requestType),结构 [{name, address}] | 10.0.18 |
highAccuracyClosed | bool | 用户是否关闭关精度定位权限(仅iOS系统,iOS14+),默认不返回该字段,关闭则置为true返回 | 10.1.99 |
<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
同中国标准身份证号前六位地区码