То, как в данный момент пишется viewForAnnotation, при попытке показать текущее местоположение должно действительно произойти сбой, потому что представление аннотации с синей точкой не имеет свойств pinColor или animatesDrop.
Попробуйте изменить его на следующее:
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{
if ([annotation isKindOfClass:MKUserLocation.class]) {
//user location view is being requested,
//return nil so it uses the default which is a blue dot...
return nil;
}
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
if([inStock isEqual:@"yes"]){
annView.pinColor = MKPinAnnotationColorGreen;
}
if([inStock isEqual:@"no"]){
annView.pinColor = MKPinAnnotationColorRed;
}
if([inStock isEqual:@"unknown"]){
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"greyPin.png"]];
[annView addSubview:imageView];
}
annView.animatesDrop=TRUE;
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
return annView;
}
На симуляторе местонахождение пользователя будет Купертино, Калифорния, США (немного южнее Сан-Франциско). Если ваша собственная аннотация находится за пределами 5000 метров, вы не увидите синюю точку. Вам придется уменьшить масштаб, чтобы увидеть это.