如何从iOS中覆盖默认用户位置的蓝色灯塔停止viewForAnnotation方法(How to s

2019-06-26 17:00发布

现在我用填充注释的地图视图,并显示用户的当前位置。 随着viewForAnnotation方法,它将覆盖使用默认的红针的所有注释,但我想回到的其他注释的意见,但保留用户位置的默认蓝色灯塔。 有没有办法简单地做到这一点还是我必须建立一个新的注解视图,并返回正确的视注解?

现在,我有这样的:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    if (annotation.coordinate == locationManager.location.coordinate) {

return nil;

    }else {

    MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Beacon"];

    // Button
    UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    button.frame = CGRectMake(0, 0, 23, 23);
    annotationView.rightCalloutAccessoryView = button;


    annotationView.canShowCallout = YES;

    return annotationView;
}
}

但我不能等同于两个,因为我不能得到协调地产出注释说法。

任何人都知道这个解决方案的任何?

Answer 1:

看看这里的文档:

http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapViewDelegate_Protocol/MKMapViewDelegate/MKMapViewDelegate.html

由于它指出:

如果标注参数的对象是的实例MKUserLocation类,你可以提供一个自定义视图来表示用户的位置。 要显示使用默认的系统视图的用户的位置,返回nil。

所以,你可以添加一个条件来检查这一点:

if([annotation isKindOfClass: [MKUserLocation class]]) {
  return nil;
}


文章来源: How to stop the viewForAnnotation method from overriding the default user location blue beacon in iOS