gpt4 book ai didi

iOS MapKit 通过 didUpdateUserLocation 崩溃 - 困惑

转载 作者:行者123 更新时间:2023-11-28 17:39:20 24 4
gpt4 key购买 nike

我在使用 MapKit 制作的应用程序方面需要一些帮助

我正在为 didUpdateUserLocation 苦苦挣扎:- 它总是随机地使应用程序崩溃。当我注释掉所有代码时,它可以完美运行,但这不是合适的情况。我一直在摆弄这一切,但仍然没有真正的成功。

这是我的代码

-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
NSLog(@"update loc");
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 250.0, 250.0);//MKCoordinateRegionMake(userLocation.coordinate, mapView.region.span);
if (first) {
region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 250.0, 250.0);
first = false;
}
if (!CLLocationCoordinate2DIsValid(userLocation.coordinate)) {
//do nothing, invalid regions
NSLog(@"co-ord fail");
} else if (region.span.latitudeDelta <= 0.0 || region.span.longitudeDelta <= 0.0) {
NSLog(@"invalid reg");
} else {
[mapView setRegion:region animated:NO];
}
}

应用程序从来没有遇到“co-ord fail”或“invalid reg”,所以我真的不知道问题出在哪里,因为我自己设置了这些值。

问题通常发生在 Map 的 nib 关闭并且它已释放 View 时。

我看过其他一些建议,但对他们的工作没有信心。理想情况下,我想使用 mapView.region.span 来保持缩放级别

非常感谢,詹姆斯

最佳答案

请注意,如果一个 App 暂停了一小会儿,在恢复

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 

委托(delegate)作为第一个 userLocation (0.0,0.0) 接收纬度、经度!我认为这是一个错误.. 检查:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
NSLog( @"userLocation:(%p) %@",userLocation,userLocation);
NSLog( @"userLocation.location:(%p) %@",userLocation.location,userLocation.location);
NSLog( @"userLocation.coordinate: %f,%f valid:%d",userLocation.coordinate.latitude,userLocation.coordinate.longitude, CLLocationCoordinate2DIsValid(userLocation.coordinate));
NSLog( @"userLocation.location.coordinate: %f,%f valid: %d",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude, CLLocationCoordinate2DIsValid(userLocation.location.coordinate));

结果:

userLocation:(0x193fc0) <MKUserLocation: 0x193fc0>
userLocation.location:(0x0) (null)
userLocation.coordinate: -180.000000,-180.000000 valid:0
userLocation.location.coordinate: 0.000000,0.000000 valid: 1

奇怪的是 0,0 是从 userLocation.location.coordinate 产生的,而 userLocation.location 是 nil,导致有效坐标,甚至!

确实,检查 userLocation.location 是否为 nil 似乎是最好的。

关于iOS MapKit 通过 didUpdateUserLocation 崩溃 - 困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8783526/

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