gpt4 book ai didi

ios - 更改 View 后 MKMapView 重置

转载 作者:行者123 更新时间:2023-11-29 12:56:00 25 4
gpt4 key购买 nike

我的 MKMapView 有问题,在我将当前 View 更改为另一个 View 并再次返回 map 后,它一直在重置。事实上,第一次一切顺利, map 正确地以用户位置为中心,但第二次就不行了。

这是我的代码:

MapViewController.h

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

@interface MapViewController : UIViewController <MKMapViewDelegate, CLLocationManagerDelegate>

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

@end

MapViewController.m

#import "MapViewController.h"

@interface MapViewController ()

@end

MKMapView *mapView;

@implementation MapViewController

@synthesize mapView;

- (void)mapView:(MKMapView *)aMapView didUpdateUserLocation:(MKUserLocation *)aUserLocation
{
MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta = 0.009;
span.longitudeDelta = 0.009;
CLLocationCoordinate2D location;
location.latitude = aUserLocation.coordinate.latitude;
location.longitude = aUserLocation.coordinate.longitude;
region.span = span;
region.center = location;

[aMapView setRegion:region animated:YES];
}

- (void)viewDidLoad
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
CGSize result = [[UIScreen mainScreen] bounds].size;

if (result.height == 480)
{
mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 64, 320, 416)];
mapView.showsUserLocation = YES;
mapView.mapType = MKMapTypeHybrid;
mapView.delegate = self;
}

if (result.height == 568)
{
mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 64, 320, 504)];
mapView.showsUserLocation = YES;
mapView.mapType = MKMapTypeHybrid;
mapView.delegate = self;
}
}

[self.view addSubview:mapView];

[super viewDidLoad];
}

@end

还有一些图片

第一次: enter image description here

第二次: enter image description here

感谢大家帮我解决这个问题,祝你有美好的一天!

最佳答案

我查看了文档并找到了一个 mapView 属性 visibleMapRect
当您推送新 View 时,将此值存储为类属性。例如:

@property MkMapRect currentRect;

初始化 currentRect = CGRectZero;
在推送新 View 之前,

currentRect = mapView.visibleMapRect;

当您稍后来到这个 View 时,将调用 mapView 委托(delegate),并在其中一个委托(delegate)方法中编写以下代码

if (currentRect.size.width!=0)
[mapView setVisibleMapRect:currentRect animated:YES].

它会起作用。

关于ios - 更改 View 后 MKMapView 重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21093687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com