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 に答える