gpt4 book ai didi

ios - MKMapView 有时会缩放到用户位置有时会缩放到不知名的地方

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:28:23 25 4
gpt4 key购买 nike

我正在使用 am mapview,有时我的 map 会在我打开它时放大到我的用户位置,但有时它会放大到海洋中央。我不知道是什么原因造成的,这是我用于缩放的代码。我不希望 map 跟踪用户,而只是在他们打开 map 后缩放到他们的位置

-(void) viewDidAppear:(BOOL)animated{

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(self.mapView.userLocation.coordinate, 600.0f, 600.0f);
[self.mapView setRegion:region animated:YES];

}

-(void) viewDidLoad{

[super viewDidLoad];

self.mapView.delegate = self;
[self.mapView setShowsUserLocation:YES];

}

最佳答案

我以前遇到过这个问题。似乎 mapView 加载和检测用户位置有时很慢,导致 viewDidAppear 中的代码在 map View 可以检查用户位置 之前执行。因此,海洋中的 Blob 。

最好使用 mapView 的 delegate 准备就绪后显示用户位置:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
if(isShowUserLocation)
{
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 600.0, 600.0);
[self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES];
isShowUserLocation = NO;
}
}

viewDidLoad 中设置 isShowUserLocation = YES。这可确保用户位置在输入时显示一次,并在您需要时有选择地显示。

编辑 1:

@implementation MapViewController
{
BOOL isShowUserLocation;
}

-(void) viewDidLoad
{
[super viewDidLoad];
self.mapView.delegate = self;
[self.mapView setShowsUserLocation:YES];
isShowUserLocation = YES;
}

编辑 2:

或者,使用 CLLocationManager - 参见 this post .它允许您停止更新。务必包含 CoreLocation.framework。不过,在将 CLLocationManager 与 MapView 交互时,您可能需要处理一些细节问题。

关于ios - MKMapView 有时会缩放到用户位置有时会缩放到不知名的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22739533/

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