Search code examples
iosaugmented-realitycllocationmanagercompass-geolocation

iPhone: offset with compass heading values between landscape right and landscape left


To be clear my problem is not reading the heading values in landscape right or left. It works fine I'm using a location manager and subtract 90° to read the heading value in landscape right and 270° in landscape left, by default the device is always considered in Portrait mode, that is why we have to make this adjustments.

I recently developed a location-based augmented reality app and what I'm experiencing is, there is always an offset with the heading values between landscape right and left. I tested "on field", the offset is approximately 12°.

I want this app to be as accurate as possible, I mean since we rely on sensor data here and this is the first release, less than 10° is acceptable (even 15° in the worst cases). But if we add to the existing error an offset of 12° it is quite annoying.

Does anyone have an explanation for this? I would like to have one even if I cannot fix it right now. So now I'm trying to "fix" this by adding 12° to landscape left, or maybe I should rather subtract 12° to landscape right, well I don't know!

Any experiences on this issue?


Solution

  • My experience is that the compass is not very good, especially in landscape view. I would NOT subtract 12° in one view since the difference might something else on another device. I suggest that you test on one or two other iPhones before proceeding.

    Also, are you setting the view of the LocationManager?

    CLLocationManager *compassManager;
    compassManager.headingOrientation =CLDeviceOrientationLandscapeLeft;