2011-09-09 83 views
0

我说我是初学者,所以请千万不要错过任何一步! 我用代码来显示和“跳”到用户的位置:“显示当前位置”按钮(如Maps.app)

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

     span.latitudeDelta=0.002; 
     span.longitudeDelta=0.002; 

     CLLocationCoordinate2D location=mv.userLocation.coordinate; 

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

     [mv setRegion:region animated:TRUE]; 
     [mv regionThatFits:region]; 
    } 
} 

但我想只是要求它,当我按下一个按钮。我该怎么办呢? (记住:我是初学者!)。提前致谢!

回答

1

你所需要做的就是不要调用上面的setRegion,而只是在按下按钮时调用它。或者,您可以使用[locationManager startUpdatingLocation] [locationManager stopUpdatingLocation]打开和关闭更新地图,但将其留在电池上,请谨慎对待。

+0

我试着用这段代码,但仍然不起作用(当我按下按钮时它会冻结)。 ' - (IBAction)goToLocation MKMapView * mapView; MKUserLocation * myLocation = [mapView userLocation]; CLLocationCoordinate2D coord = [[myLocation location] coordinate]; MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(coord,350,350); [mapView setRegion:region animated:YES]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:1]; [UIView commitAnimations]; }' – Netnyke

+0

取出调用beginAnimations,setAnimationDuration和commitAnimations。你已经告诉你的setRegion调用动画,它会比你在这里做的更好。如果调试器仍然存在问题,请查看它冻结的线路。 –

+0

您可能还想在这里添加这些行:region.span = span; region.center = location; –