敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多。
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20250529.zip,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
单次定位,国内返回高德坐标系,可以直接标记在高德地图上,海外返回GPS坐标。
$('html,body').animate({scrollTop: $('#view').offset().top}, 1200);
//发起定位单次定位(watch 为 false)
jsBridge.amapLoc.getCurrentPosition({
//可选,定位超时时间(秒),默认30秒,建议设置为 2 - 30 之间
//精度要求越高则耗时越长,如果超时仍未取得需要的定位精度将返回已取得的最高精度
timeout: 30,
//可选,数字类型,定位模式,默认 1
//1 高精度定位模式:同时使用网络定位和GPS定位,优先返回精度高的定位
//2 仅设备定位模式:只使用GPS定位
//3 低功耗定位模式:只使用网络定位
locationMode: 1,
//可选, 连续定位, 默认 false
//调用 jsBridge.amapLoc.stop() 停止定位
watch : false,
//可选,连续定位时间间隔(秒),最低1秒,默认1
watchInterval: 3,
//可选,布尔类型, true = 不需要地址信息,默认 false (需要)
//不需要地址信息时的定位速度更快,消耗更少的流量
notAddress : false,
//可选,连续定位通知栏标题,默认为应用名称
notifyTitle : "",
//可选,连续定位通知栏内容
notifyContent: "持续定位中...",
//可选,将定位数据 POST (Content-Type: application/json) 发送到你的服务器地址,留空则不发送
//APP 被推到后台以后 HTML js 页面会暂停运行,页面将无法处理定位数据;
//如需后台获取位置信息,请提供一个链接地址,由APP发起原生请求将定位结果 POST 给你的服务器
//暂不支持传递额外数据,如需鉴权,请将鉴权参数放在 URL 链接上
//如 https://www.example.com/api/location
postToUrl: ""
}, function(succ, res) {
//此函数仅用于显示回调参数在本 DEMO 页面上
showResult({succ: succ, res: res});
});
//示例定位结果(模拟数据):
var sample =
{
success: true,
//经度
longitude: 104.04725,
//纬度
latitude: 30.542618,
//海拔高度
altitude: 0,
//速度
speed: 0,
//方向角
bearing: 0,
//定位精度(米)
accuracy: 29,
//室内定位时的建筑物编号
buildingId: "B0G21Y6JXO",
//室内定位时的楼层
floor: "",
//地址
address: "四川省成都市武侯区天府四街962号靠近佳年华·时代晶座",
//街道
street: "天府四街",
//门牌号
streetNumber: "962号",
//区县
district: "武侯区",
//市
city: "成都市",
//省
province: "四川省",
//国家
country: "中国",
//城市编码
cityCode: "028",
//地区编码
adCode: "510107",
//定位类型,参见 https://lbs.amap.com/api/android-location-sdk/guide/utilities/location-type/
locationType: 5,
//poi名称
poiName: "佳年华·时代晶座",
//aoi名称
aoiName: "佳年华·时代晶座",
//GPS信号状态
gpsAccuracyStatus: "GPS_ACCURACY_UNKNOWN",
locationDetail: "#id:ELA==#csid:901652def094468ab9852bf21112d2fb"
}
$('html,body').animate({scrollTop: $('#view').offset().top}, 1200);
//需要在室外空旷处才能定位成功
jsBridge.amapLoc.getCurrentPosition({
//仅使用 GPS 定位
gpsOnly: true
}, function(succ, res){
//此函数仅用于显示回调参数在本 DEMO 页面上
showResult({succ: succ, res: res});
});
1. watch 参数设为 true 即为实时连续定位,当用户位置发生变化时会收到回调通知;
2. Android 8 以上会在手机状态通知栏放置持续定位的前台服务通知,以降低应用被系统杀掉的概率;部分设备默认禁止了 APP 通知,可打包 本地通知 插件,调用 jsBridge.notification.requestAuth 检查是否开启了通知权限,如果没有通知权限可调用 jsBridge.appSettings() 引导用户开启权限;
3. Android 10 以上系统会申请后台定位权限(ACCESS_BACKGROUND_LOCATION),用户可选择 “始终允许” 或 “仅在使用该应用期间允许”;
4. Android 11 申请后台定位权限时不再出现 “始终允许” 选项,此时只能引导用户进入应用设置授予始终允许后台定位的权限;
5. 调用 jsBridge.appSettings() 可以打开应用设置;
6. 详细说明请参考 高德定位。
var i = 0;
var cnt = $("#cnt").show().text("");
var result = $("#result").text("定位中...");
$('html,body').animate({scrollTop: $('#view').offset().top}, 1200);
//发起定位,开启后请拿着手机走起来
//在室外开启GPS定位会更准确
jsBridge.amapLoc.getCurrentPosition({
watch: true,
watchInterval: 3,
//不需要地址信息时的定位速度更快,消耗更少的流量
notAddress : true,
notifyTitle : "我的APP",
notifyContent: "持续定位中..."
//, postToUrl: "https://www.example.com/api/location"
}, function(succ, res){
cnt.text("第 " + (++i) + " 次位置回调: ");
//此函数仅用于显示回调参数在本 DEMO 页面上
showResult({succ: succ, res: res});
});
定位结果 (position 回调参数):