SSukha 地图开发者文档

错误码、线程与资源管理

12.1 服务错误码

数字码 名称 处理建议
1000 SUCCESS 服务调用成功;仍检查是否有结果
2001 NETWORK_ERROR 检查网络;有界重试
2002 AUTH_ERROR 核对 Key、包名、签名、数据集、能力
2003 INVALID_ARGUMENT 修正参数,勿无限重试
2004 NO_ROUTE 换起终点或提示暂无路线
2005 SERVER_ERROR 记录 requestId 联系服务方
2006 CANCELLED 已取消;通常不提示故障

getLastError() 提供 SdkException,可读取 getCode()、getRequestId()、getHttpStatus()、getRetryAfterMillis()。httpStatus=0 表示无 HTTP 响应,retryAfterMillis=-1 表示未取得有效 Retry-After。参数校验也可能同步抛 IllegalArgumentException,不能只依赖异步回调。

SdkLogger.setErrorLogger((source, code, requestId) ->
    android.util.Log.w("MapSDK", source + " / " + code + " / " + requestId));
// 宿主日志代理不再需要时:SdkLogger.setErrorLogger(null);

12.2 定位错误码

原始码 统一代码 含义
0 成功 可使用位置
1 PERMISSION_DENIED 缺定位权限
2 PROVIDER_DISABLED 系统定位关闭
3 TIMEOUT 定位超时
4 SOURCE_FAILURE 位置源失败
5 STOPPED 定位已停止
6 PRIVACY_DENIED 未同意或已撤销授权
7 ACCURACY_INSUFFICIENT 无位置达到设定精度

定位错误通过 SukhaLocation.getError() 取得结构化信息,与搜索的 1000/200x 码分开处理。

12.3 线程与生命周期

地图、覆盖物、定位及导航控制器在主线程操作;异步服务回调也不要执行阻塞工作。同步网络方法只能在工作线程调用。共享 client 的销毁顺序:先停止定位/导航 → 销毁工具及服务 → MapView.onDestroy → 最后由拥有者 client.close。使用 MapsInitializer 的进程级默认会话时,只有全部使用者退出后才调用 MapsInitializer.destroy。

搜索对象可 cancel() 取消请求并继续复用;destroy() 后不可再调用。map.clear() 只清理地图相关对象,不能代替停止独立定位和搜索。Activity 重建后要重新绑定监听器。