سؤال

باستخدام حدث CllocationManager كائنات كائن، كيف يمكنني تحويل العنوان الناتج. واتجه القيم إلى الدرجات التي يمكنني رسمها على صورة لبوصلة؟

هل كانت مفيدة؟

المحلول

للحصول على درجات العناوين التي يمكنك استخدامها magneticHeading و trueHeading خصائص بدلا من x و y.

Trueheading.

العنوان (يقاس بالدرجات) بالنسبة إلى الشمال الحقيقي. (يقرأ فقط)

@property(readonly, nonatomic) CLLocationDirection trueHeading

مناقشة

تمثل القيمة في هذه الخاصية العنوان الذي يشير نحو القطب الشمالي الجغرافي. تم الإبلاغ دائما عن القيمة الموجودة في هذه الخاصية نسبة إلى أعلى الجهاز، بغض النظر عن اتجاه الجهاز المادي أو الواجهة للجهاز. تمثل القيمة 0 شمالا حقيقيا، 90 يمثل أقصى شرق شرق، 180 يمثل بسبب الجنوب، وهلم جرا. تشير القيمة السلبية إلى أن العنوان لا يمكن تحديده.

نصائح أخرى

هذه هي الطريقة التي استوردت uiimageview مع صورة البوصلة. كانت إبرة الشمال موجودة في الأصل صعودا في الصورة.

if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
            NSLog(@"UIInterfaceOrientationLandscapeLeft");
            [self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((((newHeading.magneticHeading - 90) *3.14/180)*-1) )];

        }else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight){
            NSLog(@"UIInterfaceOrientationLandscapeRight");
            [self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((((newHeading.magneticHeading + 90) *3.14/180)*-1))];

        }else if (self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){
            NSLog(@"UIInterfaceOrientationPortraitUpsideDown");
            [self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((((newHeading.magneticHeading + 180) *3.14/180)*-1) )];

        }else{
            NSLog(@"Portrait");
            [self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((newHeading.magneticHeading *3.14/180)*-1)];
        }

محاولة:

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {

   CLLocationDirection trueNorth = [newHeading trueHeading];

   CLLocationDirection magneticNorth = [newHeading magneticHeading];

}

ClloinityDirection هو Typedef Double وهكذا يمكنك الحصول على العنوان الحقيقي أو المغناطيسي في الدرجات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top