にいくつかのカスタム注釈ビューを表示し、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];
}
}
}
}
ただし、コールアウトはどちらも表示されません。タップ時に地域をプログラムで変更しないと、すべての吹き出しが表示されます。どうすればこれを解決できますか?
ありがとう