在iOS 6上遇到mapkit usertrackingwithheading模式的问题

我想我可能在iOS 6的mapkit API中发现了一个错误,但是由于我仍然认为自己是菜鸟,我以为我会在这里查看,看看有没有人可以指出我可能做错了的事情。

我有一个应用程序,我已经在几个星期工作了一个地图,并利用MKUserTrackingButton来切换跟踪模式。在iOS 5上它工作正常,但从升级到6它有奇怪的行为。当您将地图视图放入跟随用户标题的跟踪模式时,如果您是相对静止的,则会很正常,但是当您开始在汽车中移动时,它会每次都回到常规跟踪模式时从航向模式中退出轨道。经过许多令人沮丧的时间试图弄清楚,我决定使用最小的地图和跟踪来制作一个新的简单的应用程序,看看它是否只是我的编码或可能的错误。新的应用程序做同样的事情。我正在发布下面的所有代码。希望有人可以帮助我告诉我是否做错了事情。

这是应用程序委托头

//  iTrackerAppDelegate.h
//  iTracker
//
//  Created by Victor Hudson on 9/22/12.
//  Copyright (c) 2012 Victor Hudson. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "TrackerViewController.h"

@interface iTrackerAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) IBOutlet UIWindow *window;

@end

这是应用程序委托实现

    //
    //  iTrackerAppDelegate.m
    //  iTracker
    //
    //  Created by Victor Hudson on 9/22/12.
    //  Copyright (c) 2012 Victor Hudson. All rights reserved.
    //

    #import "iTrackerAppDelegate.h"

    @implementation iTrackerAppDelegate

    @synthesize window = _window;

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        TrackerViewController *trackerView = [[TrackerViewController alloc] init];

        UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:trackerView];

        [self.window setRootViewController:navController];

        [[self window] makeKeyAndVisible];
        return YES;
    }

// the other app delegate methods are all empty so i left them out for brevity

    @end

这是我的视图控制器。它具有一个与之相邻的世界观的笔尖,以及用于切换地图模式的分段开关(平面,饱和和混合)
TrackerViewController.h

//
//  TrackerViewController.h
//  iTracker
//
//  Created by Victor Hudson on 9/22/12.
//  Copyright (c) 2012 Victor Hudson. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface TrackerViewController : UIViewController

@property (strong, nonatomic) IBOutlet MKMapView *worldView;

- (IBAction)toggleMapView:(id)sender;

@end

TrackerViewController.m

//
//  TrackerViewController.m
//  iTracker
//
//  Created by Victor Hudson on 9/22/12.
//  Copyright (c) 2012 Victor Hudson. All rights reserved.
//

#import "TrackerViewController.h"

@interface TrackerViewController ()

@end

@implementation TrackerViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    // navigation item
    [[self navigationItem] setTitle:@"iTracker"];

    MKUserTrackingBarButtonItem *trackingButton = [[MKUserTrackingBarButtonItem alloc] initWithMapView:self.worldView];
    [[self navigationItem] setRightBarButtonItem:trackingButton animated:YES];

    self.worldView.userTrackingMode = 1;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)toggleMapView:(id)sender {
    switch ([sender selectedSegmentIndex]) {
        case 0:
        {
            [self.worldView setMapType:MKMapTypeStandard];
        }break;
        case 1:
        {
            [self.worldView setMapType:MKMapTypeSatellite];
        }break;
        case 2:
        {
            [self.worldView setMapType:MKMapTypeHybrid];
        }break;
    }
}
@end

正如我之前说的,似乎工作正常,但跟踪与标题模式,当你移动非常快。我在一个iPhone 4上运行,并且Ive尝试使用和不使用ARC的应用程序得到相同的结果。如果有人可以指出我所犯的错误或者想要构建项目并且可以确认它是一个错误,我将不胜感激。

提前感谢任何协助;-)

从ios5到ios6,我正在调查我的应用程序中的类似行为。
有一个位置管理员创建为一个单身,如

cllocationmanager singleton

此外,在mapview我正在使用setusertrackingmode。在ios6中,它从MKUserTrackingModeFollowWithHeading跳转到MKUserTrackingModeFollow。在ios5中,相同的代码可以正常工作。
这可能是两个位置管理者之间相互冲突

conflict between two locationmanagers

http://stackoverflow.com/questions/12546524/having-trouble-with-mapkit-usertrackingwithheading-mode-on-ios-6

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在iOS 6上遇到mapkit usertrackingwithheading模式的问题