iPhone 시뮬레이터에서 Blue Dot 대신 ShowSerlocation 리턴 핀을 반환합니다.
-
13-09-2019 - |
문제
이것은 나의 -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]]) {}
제휴하지 않습니다 StackOverflow