gpt4 book ai didi

ios - mapView 不缩放第二次尝试使用 didUpdateUserLocation

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

当从我的主视图 Controller 按下 View map 按钮时,我正在加载一个 mapviewcontroller:

- (IBAction)mapButton:(id)sender {
MapKitDisplayViewController *mapKitDisplayView = [[MapKitDisplayViewController alloc] init];
[self presentModalViewController:mapKitDisplayView animated:YES];
[mapKitDisplayView release]; mapKitDisplayView = nil;
}

启动此 map View 时会调用此方法,它会正确缩放到用户位置:

- (void)mapView:(MKMapView *)myMapView didUpdateUserLocation:(MKUserLocation *)userLocation 
{
myMapView.showsUserLocation = YES;
NSLog(@"didUpdateUserLocation = '%@'", userLocation);

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([userLocation coordinate], 20000, 20000);
[myMapView setRegion:region animated:YES];
}

我在这个屏幕上有一个关闭这个 View 的完成按钮:

- (IBAction)mapDoneButton:(id)sender 
{
[self dismissModalViewControllerAnimated:YES];
}

在这个阶段,用户被带回主视图 Controller ,但是当我再次按下 View map 按钮时,didUpdateUserLocation 方法永远不会被调用!因此, map View 缩小到默认 View ,不会像以前那样放大。

如何让它再次被调用?

谢谢

最佳答案

MKMapView 对象不会自行触发用户位置更新。您需要通过设置 showsUserLocation = YES 来激活搜索。然后这将获取用户的位置,然后调用委托(delegate)方法 mapView:didUpdateUserLocation:。因此,在 viewWillAppear: 上将此值设置为 YES,一旦您确定了用户位置,就可以将其设置为 NO 以停止跟踪用户。如果您不这样做,它会定期更新用户位置并调用委托(delegate)方法。如果不这样做,用户位置应该是不可靠的。

关于ios - mapView 不缩放第二次尝试使用 didUpdateUserLocation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6213763/

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