0

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

这是 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];

     //......

 }
4

2 回答 2

2

我认为这是因为更新不断被调用,所以它会一直以你的 mapview setregion 位居中屏幕。

当您声明您的 locationManager 时,请确保设置灵敏度。

self.locationManager.distanceFilter = 10.0f;

这只会在更改超过 10 米时调用更新。

于 2012-11-07T11:13:09.350 回答
0

每次设备注意到它已更改位置时,您都将地图缩放到 self.latitudine 和 self.longitudine。在您显示的代码中,您没有将这些值设置为任何新值。你的意思是放大newLocation坐标吗?

于 2012-11-07T19:53:27.693 回答