使用MapKit,当前位置在地图上不可见

时间:2019-05-08 15:44:02

标签: ios objective-c mapkit

我想使用MapKit在地图上显示用户的当前位置,一切正常,但是用户的当前位置在地图上不可见。 这是我为mapView设置的属性:

mapView properties

这是控制器的其余代码:

#import <MapKit/MapKit.h>
#import "ShowMarkerAndNavigateVC.h"

@interface ShowMarkerAndNavigateVC ()

@property (weak, nonatomic) IBOutlet MKMapView *mapView;

@end

CLLocationManager *mgr;


@implementation ShowMarkerAndNavigateVC

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"View loaded Successfully");
    mgr = [[CLLocationManager alloc] init];
    [mgr requestWhenInUseAuthorization];
    NSLog(@"Reuquested always authorization");
}

- (IBAction)backButtonPressed:(id)sender {
    [self.navigationController popViewControllerAnimated:YES];
}


@end

我还为当前控制器设置了mapView委托,如下所示: mapView delegate

预期结果是它应该显示用户的当前位置。 实际结果是它没有在地图上显示位置,如下所示: result on simulator

2 个答案:

答案 0 :(得分:0)

首先,我建议实际上在代码中将showsUserLocation属性设置为YES。

第二,请注意,由您决定显示用户位置实际所在的区域;例如:

- (void)mapView:(MKMapView *)mapView
        didUpdateUserLocation:(MKUserLocation *)userLocation {
    CLLocationCoordinate2D coordinate = userLocation.location.coordinate;
    MKCoordinateRegion reg =
        MKCoordinateRegionMakeWithDistance(coordinate, 600, 600);
    mapView.region = reg;
}

答案 1 :(得分:0)

如果您使用的是模拟器,您将无法获得用户的位置,因为模拟器不知道自己的位置。

为此,请打开Simulator的 Debug 菜单,然后在*** Location *子菜单中选择 Apple

希望这会对您有所帮助。