SSukha 地图开发者文档

定位

7.1 单次定位

调用前由宿主完成实际的定位权限与隐私授权。userHasConsented 是宿主保存的真实结果。

SukhaLocationClient location = new SukhaLocationClient(context);
location.setPrivacyConsent(userHasConsented);
location.setLocationOption(new SukhaLocationClientOption()
    .setOnceLocation(true).setLocationTimeout(15000));
location.setLocationListener(fix -> {
    if (fix.getErrorCode() != 0) { report(fix.getError()); return; }
    report(fix.getLatitude()); report(fix.getLongitude());
});
location.startLocation();

单次结果后自动停止采集,实例仍应在结束使用后 onDestroy()。成功错误码是 0;它不同于搜索服务的成功码 1000。不要使用失败对象中的无效坐标。

7.2 连续定位与参数

location.stopLocation();
location.setLocationOption(new SukhaLocationClientOption()
    .setOnceLocation(false).setInterval(2000)
    .setLocationMode(SukhaLocationClientOption.SukhaLocationMode.Hight_Accuracy)
    .setNeedAddress(false));
location.startLocation();
配置方法 默认 有效值与含义
setOnceLocation false true 单次,false 连续
setInterval 2000 1000–3600000 毫秒,期望间隔
setLocationTimeout / setHttpTimeOut 15000 1000–120000 毫秒
setLocationMode Hight_Accuracy Hight_Accuracy、Battery_Saving、Device_Sensors;拼写按真实枚举
setMaximumAccuracy 正无穷 大于 0 的米数;默认保留基础质量过滤
setOnceLocationLatest false 有限观察窗口内选择较优位置
setBestLocationTimeout 3000 1000–10000 毫秒
setLocationCacheEnable false 是否复用有效缓存
setLastLocationLifeCycle 10000 缓存寿命 0–60000 毫秒
setNeedAddress false 异步补充地址,独立地址监听接收
setSensorAssistEnabled false 可选方向辅助

setAddressListener 接收后续地址结果;首次坐标不应等待地址。地址字段缺失时显示业务占位语,不拼接假省市区。方向或速度必须检查 hasBearing() / hasSpeed();缺失方向不是朝北。

7.3 显示定位蓝点

map.setMyLocationStyle(new MyLocationStyle()
    .myLocationType(MyLocationStyle.LOCATION_TYPE_SHOW)
    .dotColor(0xff1268e5).radiusFillColor(0x221268e5));
map.setMyLocationEnabled(true);
// 成功定位回调内:fix 为真实 SukhaLocation
android.location.Location raw = new android.location.Location("sdk");
raw.setLatitude(fix.getLatitude()); raw.setLongitude(fix.getLongitude());
raw.setAccuracy(fix.getAccuracy()); raw.setTime(fix.getTime());
map.updateMyLocation(raw);

SHOW 仅显示,LOCATE 首次回中,FOLLOW 持续跟随。输入是原始 WGS84;GCJ02 模式由地图内部转换显示。

7.4 前台服务与释放

SukhaLocationClient 自身不是前台服务,也没有可照搬的高德 enableBackgroundLocation 方法。后台持续场景由宿主合法启动并维持 location 类型前台服务,或选用 SDK 的导航/配送前台组件;权限、通知和启动时机需按目标 Android 版本处理。系统停止进程后不能保证持续定位。

停止采集调用 stopLocation();最终释放调用 onDestroy()。页面关闭是否结束持续定位由业务会话拥有者决定,不应销毁仍在服务中使用的对象。