定位相关设置与回调 最后更新时间: 2026年05月29日
导航SDK是强依赖定位的,当您初始化AMapNavi时,SDK内部会自行启动定位,默认周期为一秒定位一次,如果您有控制定位频率的需求,可以使用如下接口,为保证导航效果,建议定位频率一秒一次。
/**
* 启动GPS定位, 带距离和时间参数。
* <p>
* 用户可以手动启动GPS,如果没有启动GPS, 在驾车或者步行导航启动时(startNavi)会自动启动。默认定位时间间隔为1秒,变化距离为0。
* </p>
*
* @param time 位置更新的时间间隔, 单位:秒。
* @param dis 位置更新的距离间隔,单位:米。
* @return 返回GPS启动是否成功。true代表成功,false代表失败。
* @since 2.2.4
*/
startGPS(time?: number , dis?: number): boolean
/**
* 停止手机卫星定位。
*
* @return 返回是否停止手机卫星定位成功。true,成功;false,失败。
* @since 2.2.4
*/
stopGPS(): boolean定位相关回调接口在AMapNaviListener类中,接入如下,定位详细信息在AMapNaviLocation中。
/**
* 当位置信息有更新时的回调函数。
*
* @param location 当前位置的定位信息。
* @since 1.0.0
*/
onLocationChange?:(location: IAMapNaviLocation | null) => void
/**
* 用户手机位置信息设置是否开启的回调函数。
*
* @param enabled true,开启;false,未开启。
* @since 1.0.0
*/
onGpsOpenStatus?:(enabled: boolean) => void
/**
* 手机卫星定位信号强弱变化的回调
*
* @param isWeak true: 信号弱;false:信号强
* @since 2.2.4
*/
onGpsSignalWeak?:(isWeak: boolean) => void手机定位信号可以分为卫星定位、网络定位,精度依次递减,导航是强依赖精确定位的,但有一些地方可能无法收到高精度的卫星定位信号,如城市里的高楼旁边,高架桥下等。所以在这种时候,我们需要网络定位信号来辅助导航,网络点导航是一个补偿逻辑,它能够让用户在定位信号弱的区域也享受到较为精准的导航效果。
是否为网络点导航可以使用IAMapNaviLocation中locationType方法来判断。
onLocationChange: (location: IAMapNaviLocation | null) => {
console.info('onLocationChange', location?.locationType)
}
