我在注释针和 tableview 上打开 Detailview。为了从 detailview 中获取方向,我在按钮单击事件之后放置了位置。
编辑:: 与 -(IBAction)showDirectionUpdated; 编码
-(IBAction)showDirectionUpdated;
{
NSIndexPath *selectedIndexPath = [self._tableView indexPathForSelectedRow];
if( selectedIndexPath == [self._tableView indexPathForSelectedRow])
{
marker *aMarker = (marker *)[appDelegate.markers objectAtIndex:selectedIndexPath.row];
NSString *EndLoc=[NSString stringWithFormat:@"%@ %@", aMarker.address,aMarker.city];
NSString* addr = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=Current Location&daddr=%@",EndLoc];
NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
NSLog(@"%@",url);
[url release];
[self._tableView deselectRowAtIndexPath:selectedIndexPath animated:YES];
}
else
{
//here if I am opening the detailview from annotation callout button and calling
// direction in map default app. But respective address is not passing
//in default map app
NSInteger selectedIndex = [sender tag];
AddressAnnotation *selectedObject = [self.annobjs objectAtIndex:selectedIndex];
marker *aMarker = [appDelegate.markers objectAtIndex:selectedIndex];
NSString *EndLoc=[NSString stringWithFormat:@"%@ %@", aMarker.address,aMarker.city];
NSString* addr = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=Current Location&daddr=%@",EndLoc];
NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
NSLog(@"%@",url);
[url release];
}
}
我想传递一些发件人或 id 以从 detailView 调用相应的方向,我在按下注释时得到它。我通过选择 tableview(listview) 从 detailview 获取方向默认应用程序成功。这里有一些发件人标签的代码。
使用 viewForAnnotation 编辑 2===
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{ MKAnnotationView *annView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@""];
if (annView == nil)
{
annView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@""] autorelease];
annView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
}
annView.image = [UIImage imageNamed:@"flag.png"];
annView.annotation = annotation;
[annView setEnabled:YES];
[annView setCanShowCallout:YES];
return annView;
}
-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
NSLog(@"calloutAccessoryControlTapped");
MKAnnotationView* annView = (MKAnnotationView*) view;
AddressAnnotation* annotation = (AddressAnnotation*)[annView annotation];
if(BcardView.hidden == YES)
{
SearchView.hidden = YES;
BcardView.hidden = NO;
BackButtontitle.text = @"Map View";
marker *aMarker = [[marker alloc]init];
ShowroomName.text = aMarker.name;
}}