Reputation: 3543
This is my -mapView:viewForAnnotation
method which drops pins when i create annotation views. But when i set mapView.showsUserLocation = YES;
in -viewDidLoad
, i get a pin dropped on Infinite Loop (expected - in simulator) and not the normal blue dot.
- (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;
}
How can i get it to drop pins and show the blue dot as well?
Thanks
Upvotes: 4
Views: 5558
Reputation: 3830
Often you use your own class of annotation to look up information related to the annotation. In that case, to only handle your own annotations, use something like
if ([annotation isKindOfClass:[MapLocation class]]) {}
Upvotes: 0
Reputation: 12399
Similar to the other answer, here's something close:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
NSString *annotationType = [NSString stringWithCString:object_getClassName(annotation)];
if ([annotationType compare:@"NSKVONotifying_MKUserLocation"] == 0)
return nil;
...
}
Of course, use something like this at your own risk. It could stop working tomorrow if Apple decided to change that name.
Upvotes: 0
Reputation: 3543
Really simple to fix, although unsure if this is the correct way to do it...
if (annotation == mapView.userLocation){
return nil; //default to blue dot
}
Upvotes: 24