UserLocation图像不会移动

时间:2012-11-01 13:43:41

标签: ios mkmapview mapkit

我不明白为什么userLocation在我设置costum图像时不会移动。

如果我没有设置图像,它使用默认的蓝色指针,它可以工作;我可以看到当位置发生变化时用户位置会移动。

这是我从其他帖子中获取的viewForAnnotation。

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    static NSString* AnnotationIdentifier = @"Annotation";
    MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mk dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
    if (!pinView)
    {
        pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
        pinView.animatesDrop = NO;
        pinView.canShowCallout = YES;
    }
    else
    {
        pinView.annotation = annotation;
    }

    if (annotation == mk.userLocation)
        pinView.image = [UIImage imageNamed:@"PositionPin.png"];
    else
        pinView.image = [UIImage imageNamed:@"PositionPin.png"];

    return pinView;
}    

2 个答案:

答案 0 :(得分:0)

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    static NSString* AnnotationIdentifier = @"Annotation";
    MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mk dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
    if (!pinView)
    {
        pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
        pinView.animatesDrop = NO;
        pinView.canShowCallout = YES;
    }
        pinView.annotation = annotation;
        pinView.image = [UIImage imageNamed:@"PositionPin.png"];

    return pinView;
}    

答案 1 :(得分:0)

这似乎是地图视图中的错误(仍然存在于iOS 6中),当使用自定义注释视图时,用户位置坐标不再更新(即使文档表明它可以正常工作)。

解决方法是使用Core Location获取用户位置更新并创建自己的注释(而不是使用地图视图的userLocation),然后在viewForAnnotation中为其提供自定义图像。

请参阅Custom Annotation view for userlocation not moving the mapview的答案以获取更多详细信息以及一些实施变通方法的示例代码。


此外,请注意,在为注释视图使用自定义图像时,应使用MKAnnotationView代替MKPinAnnotationView
使用MKPinAnnotationView时,它有时会显示其默认的图片图片,而不是您的自定义图片。