ios - MKMapView 位置不会更新

标签 ios objective-c xcode mkmapview mapkit

在 Apple 的 iOS 开发者论坛上发帖但没有得到答复后,我想看看是否有人对此类问题有任何经验。 我正在使用适用于 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 的无限循环时, map 保持静止,就像什么都没有改变一样。还尝试使用自行车骑行和运行但没有任何反应。 我尝试重置 iOS 模拟器几次,但一点用都没有,当然我还尝试从 xcode it-self 中手动设置位置。

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

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

没有一个对我有用。 MapView 只是不会响应。


我验证了 map View

// 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];
}

最佳答案

在从 map 中获取任何内容之前,您必须调用 _mapView.showsUserLocation = YES;

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

关于ios - MKMapView 位置不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19616060/

相关文章:

c++ - "Declaration does not declare anything"和 "expected unqualified-id"

ios - Xcode 上的 Tesseract 运行错误

ios - 将 UIScrollView 连接到 IBOutlet

ios - Swift:将分段 Controller 添加到导航栏,并保留标题+导航按钮

通过 iTunes 同步大型内部应用程序时 iOS 同步错误 0xE8000004

objective-c - UIImageViews、xibs 和后缀(@2x、~iphone、~ipad)

javascript - 如何将值从 javascript 传递到 Objective-C

ios - AST 反序列化问题和构建模块错误

ios - AVCaptureSession如何使静音输入音频设备?

ios - 如何使我的键盘弹出窗口更加流畅,我的 View Controller 以模态方式出现?