MKMapView mathod'didUpdateUserLocation'没有调用

时间:2016-09-06 13:34:04

标签: ios objective-c mkmapview

我在我的文件中有这段代码,

@synthesize myLocation;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.locationManager = [[CLLocationManager alloc] init];
    myLocation.delegate = self;
    [self.locationManager requestWhenInUseAuthorization];
    [myLocation setShowsUserLocation: YES];

}

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{

    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800);
    [self.myLocation setRegion:[self.myLocation regionThatFits:region] animated:YES];
}

但是,方法didUpdateUserLocation没有调用。

我已经在app中添加了必需的框架。

我在info.plist文件中添加了所有内容。但它仍然不是在呼唤。

这是我的.h文件,

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>

@interface MapView : UIViewController <MKMapViewDelegate, CLLocationManagerDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *myLocation;
@property(nonatomic, retain) CLLocationManager *locationManager;
@end

3 个答案:

答案 0 :(得分:2)

我刚解决了这个问题,

locationManager = [[CLLocationManager alloc] init];
    myLocation.delegate = self;
    [locationManager requestWhenInUseAuthorization];
    [locationManager startUpdatingLocation];
    [myLocation setShowsUserLocation: YES];

startUpdatingLocation

后使用 setShowUserLocation ,值 YES

答案 1 :(得分:1)

您尚未调用方法来更新位置,因此未调用委托方法。您需要为startUpdatingLocation调用方法。

For Objective - C:

[locationManager startUpdatingLocation];

For Swift:

locationManager.startUpdatingLocation()

答案 2 :(得分:0)

兄弟我试过你的代码。没有调用委托方法。

然后我在viewDidLoad方法的末尾找到了你没有在下面添加的解决方案。请添加

[self.locationManager startUpdatingLocation];

在viewDidLoad方法中添加上面的行代码后,委托方法成功调用。