使用自定义注释时,MapKit蓝点不可见

时间:2011-01-20 11:09:00

标签: iphone annotations maps mapkit

使用自定义注释时,我无法看到蓝色当前位置点

- (MKAnnotationView *) mapView:(MKMapView *) mapView viewForAnnotation:(id<MKAnnotation> ) annotation {

    MKAnnotationView *customAnnotationView=[[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil] autorelease];

    UIImage *pinImage = [UIImage imageNamed:@"ann.png"];
    [customAnnotationView setImage:pinImage];

    customAnnotationView.canShowCallout = YES;
                                                                                                 
    //UIImageView *leftIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ann.png"]];
    //customAnnotationView.leftCalloutAccessoryView = leftIconView;

    UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
    customAnnotationView.rightCalloutAccessoryView = rightButton;

    return customAnnotationView;
}

3 个答案:

答案 0 :(得分:8)

if (annotation == map.userLocation) {
        return nil;
    }

添加此。:d

答案 1 :(得分:2)

我现在得到了答案。只需要在返回customAnnotationView之前的末尾将以下代码添加到上面的代码中;

  

if(annotation ==   mapView.userLocation){
  的NSLog(@ “无”);返回零; }

谢谢:)

答案 2 :(得分:1)

当前用户位置“蓝点”的可见性与自定义注释无关。要显示用户的当前位置,您需要将showsUserLocation的{​​{1}}属性设置为MKMapView。例如:

YES

或:

yourMapView.showsUserLocation = YES;

了解MapKit显示当前用户位置的方式有一个怪癖:在模拟器中,UserLocation将始终成为Apple在美国加利福尼亚州库比蒂诺的总部。但是,它可以在设备上正常工作。


已编辑添加:

正如Terente指出的那样,您必须小心不要“吃掉”用户的位置注释,因此必须测试以查看您正在处理的注释是否是用户的位置。我用以下内容包装逻辑:

[yourMapView showsUserLocation] = YES;

if ([annotation isKindOfClass:[MapLocation class]]) { } 是我的注释类。