iOSで標高値と磁場値を取得しようとしています。私はそれらの主題について長い間グーグルで検索してきましたが、適切に機能するものを見つけることができませんでした.
a)標高値について話しているとき、モバイルの上部を上に動かしたときの角度を度単位で取得したいと思います。わかりやすいように画像を添付しました。私はそのように試みてきましたが、うまくいきません:
.h
#import <CoreMotion/CoreMotion.h>
@property (nonatomic, retain) CMMotionManager *motionManager;
.m
self.motionManager = [[CMMotionManager alloc] init];
[self.motionManager startMagnetometerUpdates];
NSOperationQueue *myQueue = [[NSOperationQueue alloc] init];
[self.motionManager startDeviceMotionUpdatesToQueue:myQueue withHandler:^(CMDeviceMotion *motion, NSError *error){
float degrees = (motion.attitude.roll*180) / M_PI;
NSLog(@"Value of elevation is: %f", degrees);
}];
b) 磁場については、モバイルの精度に影響を与えるデバイス、磁石、鉄などの影響を取得したいと考えています。* このソリューションでは、得られるすべての値が正しくありません (一種の NSTimer の内部):
NSLog(@"magnetometer data -> x: %f", self.motionManager.magnetometerData.magneticField.x);
NSLog(@"magnetometer data -> y: %f", self.motionManager.magnetometerData.magneticField.y);
NSLog(@"magnetometer data -> z: %f", self.motionManager.magnetometerData.magneticField.z);
float magneticField = sqrtf( powf(self.motionManager.magnetometerData.magneticField.x, 2)
+ powf(self.motionManager.magnetometerData.magneticField.y, 2) +
powf(self.motionManager.magnetometerData.magneticField.z, 2) );
NSLog(@"magneticField value: %@", magneticField.text);
理解する方法はありますか....ありがとう