2017-09-19 4 views

Répondre

1

Vous avez essentiellement deux options:

1/Délégation sur DJIFlightController aka DJIFlightControllerDelegate Protocol

Vous mettrez en œuvre cette méthode et obtenir un objet DJIFlightControllerState qui aura un lieu:

- (void)flightController:(DJIFlightController *_Nonnull)fc didUpdateState:(DJIFlightControllerState *_Nonnull)state { 

    CLLocation *myCurrentLocation = state.aircraftLocation; 
    // Do something here. 
} 

2/Utilisation de l'interface à clé et de cette clé DJIFlightControllerParamAircraftLocation (voir note de clé SDK) Cette clé vous enverra une valeur qui contient un CLLocation.

Ensuite, vous pouvez soit faire un simple obtenir

guard let locationKey = DJIFlightControllerKey(param: DJIFlightControllerParamAircraftLocation) else { 
    NSLog("Couldn't create the key") 
    return 
} 

guard let keyManager = DJISDKManager.keyManager() else { 
    print("Couldn't get the keyManager") 
    // This will happen if not registered 
    return 
} 

if let locationValue = keyManager.getValueFor(locationKey) { 
    let location = locationValue.value as! CLLocation 
    // do something 
} 

ou écouter toutes les mises à jour

guard let locationKey = DJIFlightControllerKey(param: DJIFlightControllerParamAircraftLocation) else { 
     NSLog("Couldn't create the key") 
     return 
} 

guard let keyManager = DJISDKManager.keyManager() else { 
    print("Couldn't get the keyManager") 
    // This will happen if not registered 
    return 
} 

keyManager.startListeningForChanges(on: locationKey, withListener: self) { (oldValue, newValue) in 
    if newValue != nil { 
     let location = newValue!.value as! CLLocation 
     // do something 
    } 
} 

Il suffit de ne pas oublier d'arrêter d'écouter lorsque vous avez terminé.

J'espère que cela aide. PS: J'ai mélangé Swift et Obj-C parce que vous pouvez utiliser l'un ou l'autre.