문제

이것은 나의 -mapView:viewForAnnotation 주석보기를 만들 때 핀을 떨어 뜨리는 메소드. 하지만 내가 설정했을 때 mapView.showsUserLocation = YES; 안에 -viewDidLoad, 나는 정상적인 파란색 점이 아닌 무한 루프 (예상 - 시뮬레이터)에서 핀을 떨어 뜨립니다.

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
     MKAnnotationView *anno = nil;
     //create a pin annotation view
MKPinAnnotationView  *pin=[[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"]autorelease];

    [pin setPinColor:MKPinAnnotationColorRed];
    pin.animatesDrop=YES;
    pin.canShowCallout = YES;
    pin.calloutOffset = CGPointMake(-5, 5);
    anno = pin;
    return anno;
}

핀을 떨어 뜨리고 파란 점도 표시하도록하려면 어떻게해야합니까?

감사

도움이 되었습니까?

해결책

이것이 올바른 방법인지 확실하지는 않지만 해결하기가 정말 간단합니다 ...

if (annotation == mapView.userLocation){
    return nil; //default to blue dot
}

다른 팁

다른 대답과 마찬가지로 여기에 가까운 것이 있습니다.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{
    NSString *annotationType = [NSString stringWithCString:object_getClassName(annotation)];
    if ([annotationType compare:@"NSKVONotifying_MKUserLocation"] == 0)
        return nil;
    ...
}

물론, 이와 같은 것을 자신의 위험에 사용하십시오. 애플이 그 이름을 바꾸기로 결정하면 내일 일을 멈출 수 있습니다.

종종 자신의 주석 클래스를 사용하여 주석과 관련된 정보를 찾아보십시오. 이 경우 자신의 주석 만 처리하려면 다음과 같은 것을 사용하십시오.

if ([annotation isKindOfClass:[MapLocation class]]) {}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top