示例中心
功能在线体验
控制台

高德 开发 iOS 导航SDK 开发指南 在地图上导航 传入外部GPS数据

更新时间:2017年11月30日

传入外部GPS数据相当于将实时导航或巡航中的设备GPS数据进行了替换,进行导航或巡航的步骤请参考:实时导航智能巡航

实现“传入外部GPS数据”的步骤如下:

第 1 步,开启使用外部GPS数据

调用 AMapNaviDriveManager 的 setEnableExternalLocation 方法开启使用外部GPS数据。

//开启使用外部GPS数据
[[AMapNaviDriveManager sharedInstance] setEnableExternalLocation:YES];
AMapNaviDriveManager.sharedInstance().enableExternalLocation = true 

第 2 步,传入外部GPS数据

调用 AMapNaviDriveManager 的 setExternalLocation 方法传入外部GPS数据。注意:传入的GPS数据必须是WGS84坐标,并且经度、纬度、速度、精度、角度、时间参数缺一不可。

__weak typeof(self) weakSelf = self;
[self.gpsEmulator startEmulatorUsingLocationBlock:^(CLLocation *location, NSUInteger index, NSDate *addedTime, BOOL *stop) {
    
    //注意:需要使用当前时间作为时间戳
    CLLocation *newLocation = [[CLLocation alloc] initWithCoordinate:location.coordinate
                                                            altitude:location.altitude
                                                  horizontalAccuracy:location.horizontalAccuracy
                                                    verticalAccuracy:location.verticalAccuracy
                                                              course:location.course
                                                               speed:location.speed
                                                           timestamp:[NSDate dateWithTimeIntervalSinceNow:0]];
    
    //传入GPS模拟数据
    [[AMapNaviDriveManager sharedInstance] setExternalLocation:newLocation isAMapCoordinate:NO];
    
    NSLog(@"SimGPS:{%f-%f-%f-%f}", location.coordinate.latitude, location.coordinate.longitude, location.speed, location.course);
}];
gpsEmulator.start { [weak self] (location, index, addedTime, stop) in
            guard let location = location else {
                return
            }
            
            //注意:需要使用当前时间作为时间戳
            let newLocation = CLLocation(coordinate: location.coordinate,
                                         altitude: location.altitude,
                                         horizontalAccuracy: location.horizontalAccuracy,
                                         verticalAccuracy: location.verticalAccuracy,
                                         course: location.course,
                                         speed: location.speed,
                                         timestamp: Date(timeIntervalSinceNow: 0))
            
            //传入GPS模拟数据
           AMapNaviDriveManager.sharedInstance().setExternalLocation(newLocation, isAMapCoordinate: false)
            
            NSLog("SimGPS:{%f-%f-%f-%f}", location.coordinate.latitude, location.coordinate.longitude, location.speed, location.course)
        }
 
示例中心 功能
在线体验
常见问题