小编kin*_*min的帖子

放大时使用 MKMapView 在 setUserTrackingMode 上崩溃

我有带有 MKUserTrackingModeFollowWithHeading 的 MKMapView。但是有些东西将 userTrackingMode 更改为 MKUserTrackingModeFollow 或 None,所以我实现了,

- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated
{
    if ([CLLocationManager locationServicesEnabled]) {
        if ([CLLocationManager headingAvailable]) {
            [self.myMapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:NO];
        }else{
            [self.myMapView setUserTrackingMode:MKUserTrackingModeFollow animated:NO];
        }
    }else{
        [self.myMapView setUserTrackingMode:MKUserTrackingModeNone animated:NO];
    }
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,但每次我将地图放大到最详细级别时,应用程序都会在上面显示的 setUserTrackingMode:MKUserTrackingModeFollowWithHeading 行中导致 EXC_BAD_ACCESS。

我应该怎么做才能避免崩溃?如果可能,我不想使用 MKUserTrackingBarButtonItem。

mapViewController 的另一部分如下。

- (void)dealloc
{
    self.myMapView.delegate = nil;
}

- (void)viewWillDisappear:(BOOL)animated
{
    if ([CLLocationManager locationServicesEnabled]) {
        self.myMapView.showsUserLocation = NO;
        [_locManager stopUpdatingLocation];

        if ([CLLocationManager headingAvailable]) {
            [_locManager stopUpdatingHeading];
        }
    }

    [super viewWillDisappear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    if ([CLLocationManager …
Run Code Online (Sandbox Code Playgroud)

objective-c core-location mapkit ios

3
推荐指数
1
解决办法
2484
查看次数

CLLocationManager:didDetermineState:未调用forRegion

我正在使用谷歌地图SDK for iOS和CoreLocation框架的区域监控来实现iOS7应用程序.注册监控区域后,调用requestStateForRegion方法但我对设备上的didDetermineState:forRegion方法没有反应(iOS7.0.4,iPhone5S).

它可以接收didUpdateLocation方法,所以我认为委托过程工作正常.在模拟器上,didDetermineState:forRegion方法调用正确.

我该怎么做才能解决这个问题?初始化代码如下.

任何建议表示赞赏 提前致谢.

- (void)viewDidLoad
{
    if (locManager == nil ) {
        locManager = [CLLocationManager new];
    }
    locManager.delegate = self;

    CLLocationCoordinate2D targetCenter;
    targetCenter.latitude = LATITUDE_CENTER;
    targetCenter.longitude = LONGITUDE_CENTER;
    CLLocationDegrees radius = TARGET_RADIUS;
    if ( locManager.maximumRegionMonitoringDistance < TARGET_RADIUS ){
        radius = locManager.maximumRegionMonitoringDistance;
    }
    self.targetRegion = [[CLCircularRegion alloc]
                     initWithCenter:targetCenter
                     radius:radius
                     identifier:@"TargetRegion"];

    BOOL monitoringAvailability = [CLLocationManager isMonitoringAvailableForClass:[self.targetRegion class]];
    if( monitoringAvailability ) {
        if( [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized ) {
            [locManager startMonitoringForRegion:self.targetRegion];
        }
    }

    [locManager requestStateForRegion:self.targetRegion];  
}

- (void)locationManager:(CLLocationManager *)manager …
Run Code Online (Sandbox Code Playgroud)

objective-c core-location ios ios7

1
推荐指数
1
解决办法
5716
查看次数

标签 统计

core-location ×2

ios ×2

objective-c ×2

ios7 ×1

mapkit ×1