MKMapView位置不会更新

时间:2013-10-27 08:27:22

标签: ios objective-c xcode mkmapview mapkit

在Apple的iOS Devs论坛上发帖后没有回答,我试图看看是否有人对此类问题有任何经验。 我在iOS 7上使用xcode。

MapView不会更新。我很确定模拟器中的问题,但我不知道如何检查它。我很想在一个真实的设备上使用这个项目,但我的iOS 7设备仍然存在。

我创建了一个嵌套在View下的MKMapView(嵌套在ViewController下) - >将CoreLocation和MapKit添加到框架中 - >将MKMapView连接到正确的属性mapView。

我的文件如下:

MapScanViewController.h:

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

@interface MapScanViewController : UIViewController<MKMapViewDelegate>

// I was trying to create a label and print the 
// userLocation description into the label - but none worked
@property (nonatomic,retain) IBOutlet UILabel *myLabel;

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

@end

MapScanViewController.m

#import "MapScanViewController.h"

@implementation MapScanViewController

- (void)viewDidLoad    
{
    [super viewDidLoad];
    _mapView.delegate = self;
}

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800);

    [_mapView setRegion:[_mapView regionThatFits:region] animated:YES];

    // Label idea did not work eiter
    [_myLabel setText:[userLocation description]];    
}

@end

当我尝试将位置更改为Apple的无限循环时,地图仍然保持不变,根本没有变化。还试图骑自行车和跑步但没有发生任何事情。 我尝试重置iOS模拟器几次没有任何帮助,当然尝试从xcode中自动设置位置。

试图添加/强制这个(这也没有帮助):

if (_mapView.showsUserLocation)
{
_mapView.showsUserLocation = NO;
_mapView.showsUserLocation = YES;
}

没有对我有用。 MapView只是不会回应。


我验证了地图视图

// Meters-Miles convertion
#define METERS_PER_MILE 1609.344

// Just wanted to check if MapView's dead or not - worked- it took me to see (39.28..., -76.58...)
- (void)viewWillAppear:(BOOL)animated {
    // 1
    CLLocationCoordinate2D zoomLocation;
    zoomLocation.latitude = 39.281516;
    zoomLocation.longitude= -76.580806;

    // 2
    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 0.5*METERS_PER_MILE, 0.5*METERS_PER_MILE);

    // 3
    [_mapView setRegion:viewRegion animated:YES];
}

2 个答案:

答案 0 :(得分:5)

在从地图上获取任何内容之前,您必须致电_mapView.showsUserLocation = YES;

该呼叫将提示用户访问位置服务。

答案 1 :(得分:0)

正如Daij-Djan所说的那样尝试

- (void)viewDidLoad    
{
 _mapView.showsUserLocation = YES;
}