1

我不明白为什么当我在其上设置服装图像时 userLocation 不移动。

如果我不设置图像,它会使用默认的蓝色引脚并且它可以工作;当位置改变时,我可以看到用户位置移动。

这是我从其他帖子中获取的 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;
}    
4

2 回答 2

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;
}    
于 2012-11-01T15:33:06.843 回答
0

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

一种解决方法是使用 Core Location 获取用户位置更新并创建您自己的注释(而不是使用地图视图的userLocation),然后在viewForAnnotation.

有关更多详细信息和一些示例代码以实现解决方法,请参阅用户位置不移动地图视图的自定义注释视图的答案。


此外,请注意,当您的注释视图使用自定义图像时,您应该使用MKAnnotationView而不是MKPinAnnotationView.
使用 时MKPinAnnotationView,它有时会显示其默认图钉图像而不是您的自定义图像。

于 2012-11-01T15:58:18.267 回答