我在我的文件中有这段代码,
@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
答案 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方法中添加上面的行代码后,委托方法成功调用。