用户位置注释在非默认时放错位置

时间:2011-08-17 18:32:15

标签: iphone sdk annotations location android-mapview

我在MKMapView中显示用户位置。我不想要默认的蓝色圆圈,而是红色别针。

因此我实现了mapView:viewForAnnotation:并使其始终返回一个红色图钉,因为用户的位置是我将在地图视图上显示的唯一图钉。

当使用默认的蓝色圆圈时,位置非常精确,但是当更换为红色针脚时,它的关闭非常多。这就好像红色引脚被精确地掉落然后向上移动所以它不再显示我当前的位置。

这是我的代码:

- (MKAnnotationView *)mapView:(MKMapView *)_mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    NSLog(@"MapView: Annotation.");

    MKPinAnnotationView *pin = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil];
    [pin setPinColor:MKPinAnnotationColorRed];
    [pin setAnimatesDrop:YES];
    [pin setCanShowCallout:NO];

    return pin;
}

我使用mapView:didAddAnnotationViews:将地图视图居中到我当前的位置。

- (void)mapView:(MKMapView *)_mapView didAddAnnotationViews:(NSArray *)views
{
    for(MKAnnotationView *annotationView in views)
    {
        if(annotationView.annotation == _mapView.userLocation)
        {
            MKCoordinateRegion region;
            MKCoordinateSpan span;

            span.latitudeDelta = 0.20;
            span.longitudeDelta = 0.20;

            CLLocationCoordinate2D location = [[_mapView userLocation] coordinate];

            region.span = span;
            region.center = location;

            [_mapView setRegion:region animated:YES];
            [_mapView regionThatFits:region];
        }
    }
}

有没有人知道为什么在使用红色引脚而不是默认注释视图时,我的注释不再正确?

1 个答案:

答案 0 :(得分:0)

设置[pin setAnimatesDrop:NO]代替YES解决了这个问题。