我正在尝试在MKMapViewDelegate中使用一些委托方法。具体来说,我想弹出一个附件箭头,以便当用户触摸它时,它会启动原生地图应用程序(用于完整的映射功能。)
我想我理解正确的是,一旦将VC设置为自己的委托,就会自动调用协议方法。在这种情况下,是否会自动调用委托方法,还是必须执行其他操作?
这是启动地图的方法。
-(void) geoCodeAndMapIt {
NSString* location = @"156 University Ave, Palo Alto, CA 94301";
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:location
completionHandler:^(NSArray* placemarks, NSError* error){
if (placemarks && placemarks.count > 0) {
CLPlacemark *topResult = [placemarks objectAtIndex:0];
MKPlacemark *placemark = [[MKPlacemark alloc]
initWithPlacemark:topResult];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(placemark.coordinate, 5000, 5000);//5000 is meters
region.span.longitudeDelta /= 8.0;
region.span.latitudeDelta /= 8.0;
[self.mapView setRegion:region animated:YES];
[self.mapView addAnnotation:placemark];
}
这是一个方法,应该将附件箭头添加到callout但不会触发:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"loc"];
annotationView.canShowCallout = YES;
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
return annotationView;
}
如何让这种方法解雇,以便获得辅助箭头?感谢您的任何建议。