2010-03-11 68 views
0

如何在我的应用中自动缩放我的userLocation上的地图? 我有以下代码zomm在地图上,但我必须放大userLocation和下面的代码放大总是非洲?放大用户位置

MKCoordinateRegion zoomIn = mapView.region; 
    zoomIn.span.latitudeDelta *= 0.2; 
    zoomIn.span.longitudeDelta *= 0.2; 
    zoomIn.center.latitude = mapView.userLocation.location.coordinate.latitude; 
    zoomIn.center.longitude = mapView.userLocation.location.coordinate.longitude; 
    [mapView setRegion:zoomIn animated:YES]; 

回答

2

OK我解决了这个问题,用下面的委托方法:

-(void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views{ 
    for(MKAnnotationView *annotationView in views) { 
     if(annotationView.annotation == mv.userLocation){ 
      MKCoordinateRegion region; 
      MKCoordinateSpan span; 

      span.latitudeDelta=0.9; 
      span.longitudeDelta=0.9; 

      CLLocationCoordinate2D location =mv.userLocation.coordinate; 

      location = mv.userLocation.location.coordinate; 

      region.span = span; 
      region.center = location; 
      [mv setRegion:region animated:TRUE]; 
      [mv regionThatFits:region]; 
     } 
    } 
} 
2

非常感谢队友,这帮助了我很大的。真的想投票,但不能因为我的代表级别。

我还发现,使用:

mapView.userLocation.location.coordinate.latitude; 

总是放大我去非洲,决不中心我到我的当前位置。

但是,通过使用委托方法:

-(void)mapView:(MKMapView *)myMapView didAddAnnotationViews:(NSArray *)views { 

我是能够成功地解决这个问题。我发现当使用mapView.userLocation.location.coordinate.latitude;在viewDidLoad方法在视图启动时没有触发正确的用户坐标系,因此它显示错误的坐标。

+0

为了新手的利益:有时当它工作正常时,它可能仍然从大西洋离开非洲海岸,因为你在模拟器中运行它,位置(在调试下)设置为无 – aremvee 2014-09-25 12:23:51