gpt4 book ai didi

iphone - 为什么 MKMapView 把我放到海里?

转载 作者:行者123 更新时间:2023-12-03 18:41:57 26 4
gpt4 key购买 nike

我有以下代码可以在用户位置设置 map :

MKCoordinateSpan span;
span.latitudeDelta=0.2;
span.longitudeDelta=0.2;

CLLocationCoordinate2D location=mapView.userLocation.coordinate;
location = mapView.userLocation.location.coordinate;

MKCoordinateRegion region;
region.span=span;
region.center=location;

[mapView setRegion:region animated:TRUE];
[mapView regionThatFits:region];

现在,当我执行 mapView.showsUserLocation=YES 时,它会在正确的位置显示我的位置(在我的设备上,以及模拟器中的苹果总部),但是,上面的代码两次都将我置于非洲附近某处的大海!

有什么想法吗?

最佳答案

纬度/经度对 0/0 位于英国格林威治以南的赤道上。该地点位于非洲西海岸附近的几内亚湾。如果您的 pin 放置在此处,则您的 mapView.userLocation 尚未设置。

可能您的代码在 MKMapKit 有机会获取其位置之前就已运行。您真正想要做的是让您的 viewController 采用 MKMapKitDelegate 协议(protocol),将 map View 的 .delegate 属性设置为 self,然后实现方法:

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

本地图套件找到用户时,该方法将被调用,您可以使用传递到那里的 userLocation 值来设置 map 上的区域。不过,在第一次调用之前,MapView 仍在努力定位自身,而您询问其位置还为时过早。

另外,你的regionThatFits最后是一个空操作。该方法不会就地调整区域大小,它实际上返回一个调整大小的区域,供您随意使用。因此,您希望将 map View 的区域设置为该方法返回的区域。像这样:

[mapView setRegion:[mapView regionThatFits:region] animated:TRUE];

关于iphone - 为什么 MKMapView 把我放到海里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3666672/

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