0

にいくつかのカスタム注釈ビューを表示し、MKMapViewユーザーがそのうちの 1 つをタップすると、リージョンが中央に配置されるように変更します。

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{

   if ([view.annotation isKindOfClass:[CustomAnnotation class]]) {
     double miles = 2.5;
     double scalingFactor = ABS(cos(2 * M_PI * lat / 360.0));

     MKCoordinateSpan span;
     span.latitudeDelta = miles/69.0;
     span.longitudeDelta = miles/(scalingFactor * 69.0);

     MKCoordinateRegion region;
     region.span = span;
     region.center = self.coordinates;
     [self.mapView setRegion:region animated:YES];

   }
}

注釈が多かれ少なかれマップの中央に既に表示されている場合、吹き出しは表示されますが、注釈をマップの境界線に近づけてタップし、領域を「さらに移動」する必要がある場合は表示されません。 . 領域設定アニメーションが終了した後、注釈を選択しようとしました:

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
  for (id annotation in self.mapView.annotations) {
      if ([annotation isKindOfClass:[CustomAnnotation class]]) {
          if (((CustomAnnotation *)annotation).id == self.selectedAnnotation.id) {
              [self.mapView selectAnnotation:annotation animated:YES];
          }
      }
  }
}

ただし、コールアウトはどちらも表示されません。タップ時に地域をプログラムで変更しないと、すべての吹き出しが表示されます。どうすればこれを解決できますか?

ありがとう

4

0 に答える 0