首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MKMapView中userLocation的中心区域

MKMapView中userLocation的中心区域
EN

Stack Overflow用户
提问于 2011-05-14 03:04:15
回答 2查看 2.8K关注 0票数 1

我很困惑。我有一个MKMapView,在viewDidLoad方法中我有:

代码语言:javascript
复制
- (void)viewDidLoad {
    mainDelegate = (PublicArtOmahaAppDelegate*)[[UIApplication sharedApplication]delegate]; 

    XMLController  *myXMLController = [[XMLController alloc] init]; 
    [myXMLController parse];
    mapView.showsUserLocation = YES;
    [self gotoLocation];

    // add annotations to map
    [self.mapView addAnnotations:mainDelegate.mapAnnotations];
    [myXMLController release];
}

self gotoLocation呼叫:

代码语言:javascript
复制
- (void)gotoLocation
{
    MKCoordinateRegion newRegion;

    CLLocation *userLocation = mapView.userLocation.location;
    float latitude = userLocation.coordinate.latitude;
    float longitude = userLocation.coordinate.latitude;
    newRegion.center.latitude = latitude;
    newRegion.center.longitude = longitude;

    [self.mapView setRegion:newRegion animated:YES];
}

因此,我认为当mapView加载时,地图应该以用户的位置为中心,并且我还计划在屏幕上实现一个按钮,该按钮将在用户需要时再次手动调用gotoLocation来更新用户的位置。

但是..。当我在一台设备上运行这个应用程序时,它会加载位于非洲西部一片海域的地图,这片海域显然是横向和纵向的0,0。我觉得奇怪的是,当我放大到我的真实位置时,它已经正确地将我的位置定位为注释。所以我猜我在gotoLocation中设置用户位置的方式有问题?有没有人注意到我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-14 03:41:06

MKUserLocation documentation

位置

设备的当前位置。(只读)

@property (readonly, nonatomic) CLLocation *location

讨论

如果地图视图当前未显示用户位置或尚未确定用户位置,则此属性包含nil。

MKMapView (或CLLocationManager)需要几秒钟才能确定用户的位置,而且可能需要几次尝试才能获得相对准确的位置。最好的方法可能是创建一个CLLocationManager对象,为其分配一个委托,然后在触发locationManager:didUpdateToLocation:fromLocation:方法时缩放地图。

票数 3
EN

Stack Overflow用户

发布于 2011-05-14 04:00:49

您还应该为该区域设置span。将其设置为某个任意值,如latitudeDelta = 0.01 (对latitudeDelta也是如此)。

另外,从– locationManager:didUpdateToLocation:fromLocation:内部调用gotoLocation (如果您使用的是位置管理器)。这样,您将只在拥有有效的用户位置时调用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5996582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档