2012-11-07 100 views
0

我有一个MapView并标记了用户的位置和附近还有其他有关旅游景点的各种类型的annotationView。我希望MapView是可滚动和可缩放的,以查看城市的所有annotationView,但是当我移动MapView时立即返回中心射击,看起来丑陋。MKMapView不滚动也不缩放

这是MapViewController.m

- (void)viewDidLoad{ 

     //..... 

    self.mapView.zoomEnabled=YES; 
    self.mapView.scrollEnabled = YES; 

     //...... 
    } 


- (void) locationManager:(CLLocationManager *) manager 
didUpdateToLocation:(CLLocation *) newLocation 
     fromLocation:(CLLocation *) oldLocation { 

     //...... 
    self.coordinate = CLLocationCoordinate2DMake(self.latitudine, self.longitudine); 
    CLLocationCoordinate2D min = CLLocationCoordinate2DMake(self.coordinate.latitude -0.005, 
     self.coordinate.longitude-0.005); 

CLLocationCoordinate2D max = CLLocationCoordinate2DMake(self.coordinate.latitude+0.005, 
     self.coordinate.longitude+0.005); 

CLLocationCoordinate2D center = CLLocationCoordinate2DMake((max.latitude + min.latitude) 
    /2.0, (max.longitude + min.longitude)/2.0); 
MKCoordinateSpan span = MKCoordinateSpanMake(max.latitude - min.latitude, max.longitude - 
     min.longitude); 
MKCoordinateRegion region = MKCoordinateRegionMake(center, span); 

self.mapView.region= region; 

    [mapView setRegion:region animated:TRUE]; 

    //...... 

} 
+0

我不认为这是问题,但[mapView setRegion:region animated:TRUE];是错误的,它应该是[mapView setRegion:region animated:YES]; – jcesarmobile

+1

@jcesar传递TRUE或YES没有区别。根本不重要,因为它们是相同的。 –

+0

@ConicaDegenere检查你是否在touchesBegan/end方法中做了些什么。 –

回答

2

我认为这是因为更新是越来越经常调用的代码,所以它会在中央屏幕上的所有时间与你的MapView setregion位。

当您声明您的locationManager赌注肯定设置灵敏度。

self.locationManager.distanceFilter = 10.0f; 

这只会调用更新,如果它更改超过10米。

+0

非常感谢 –

0

每当设备发现它已经改变了位置,你正在缩放地图到self.latitudine和self.longitudine。在你已经显示的代码中,你没有将这些值设置为任何新值。你的意思是放大newLocation坐标吗?