0

TableViewには「方向」ボタンがあり、クリックすると対応するURLでGoogleマップが開きます。WebViewにGoogleMapsをロードする必要がありますが、WebViewをロードできませんでした。

ViewController.h:

@property(nonatomic,retain)BusinessNearbyLocationsMapView *businessNearbyLocationMapView;

In ViewController.m:
@synthesize businessNearbyLocationMapView;

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIImage *image = [UIImage imageNamed: @"ic_launcher.png"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage: image];
    imageView.frame =CGRectMake(0,0,120,50);
    [self.navigationBar setFrame:CGRectMake(0,0,320,70)];
    self.navigationBar.tintColor=[UIColor whiteColor];
    [self.navigationBar addSubview:imageView];
    [imageView release];
}
-(IBAction)showDirections:(id)sender
{
     selectedRow=[sender tag];
    NSMutableDictionary * location = [[[places objectAtIndex:selectedRow]objectForKey:@"geometry"]objectForKey:@"location"];
    NSString * lat = [location objectForKey:@"lat"];
    NSString * lng = [location objectForKey:@"lng"];

    AppAppDelegate  *appDelegate=(AppAppDelegate *)[[UIApplication sharedApplication]delegate];

    businessNearbyLocationMapView.url =@"http://maps.google.com/maps?saddr=%f,%f&daddr=%@,%@",appDelegate.userlatitude,appDelegate.userlongitude,lat,lng;

    [self.navigationController pushViewController:self.businessNearbyLocationMapView animated:YES];
}

BusinessNearbyLocationsMapView.m:

- (void)viewWillAppear:(BOOL)animated {
    NSString *fullUrl = [[NSString alloc] initWithFormat:@"http://%@", self.url];
    NSURL *aboutURL = [[NSURL alloc] initWithString:fullUrl];
    [fullUrl release];
    [viewWebView loadRequest:[NSURLRequest requestWithURL:aboutURL]];
    [super viewWillAppear:animated];
}

しかし、対応するURLがロードされたWebビューを見ることができませんでしたか?どこが間違っているのですか?

4

2 に答える 2

2

GoogleMapsアプリ内で道順を表示するには、次の行に沿って新しいGoogleMapsURLスキームを使用します。

comgooglemaps://?saddr=Google+Inc,+8th+Avenue,+New+York,+NY&daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York&directionsmode=transit
  1. こちらのドキュメントをご覧くださいURlスキーム

こちらのリンクもご覧ください

于 2012-12-25T06:33:51.823 に答える
0

このurlの前に追加せずにself.urlを使用してください。http://これはすでにself.url変数に付加されています...たとえば、次のように使用します。

- (void)viewWillAppear:(BOOL)animated {
        viewWebView.delegate=self;
        NSString *fullUrl =  self.url;
        fullUrl = [self removeNull:fullUrl];
        [fullUrl retain];
        NSURL *targetURL = [NSURL fileURLWithPath:fullUrl];
        NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
        [viewWebView loadRequest:request];
        [super viewWillAppear:animated];
}

BusinessNearbyLocationsMapView.mこの2つのメソッドをファイルに追加します。

-(NSString*) trimString:(NSString *)theString {
    NSString *theStringTrimmed = [theString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
    return theStringTrimmed;
}

-(NSString *) removeNull:(NSString *) string {    

    NSRange range = [string rangeOfString:@"null"];
    //NSLog(@"in removeNull : %d  >>>> %@",range.length, string);
    if (range.length > 0 || string == nil) {
        string = @"";
    }
    string = [self trimString:string];
    return string;
}

上記の2つのメソッドは、null文字列からorスペースを削除するカスタムメソッドです。この問題は、URLのどこかでスペースまたはnull値がなくなったことが原因である可能性があります...

アップデート:

-(IBAction)showDirections:(id)sender
{
     selectedRow=[sender tag];
    NSMutableDictionary * location = [[[places objectAtIndex:selectedRow]objectForKey:@"geometry"]objectForKey:@"location"];
    NSString * lat = [location objectForKey:@"lat"];
    NSString * lng = [location objectForKey:@"lng"];

    AppAppDelegate  *appDelegate=(AppAppDelegate *)[[UIApplication sharedApplication]delegate];

    BusinessNearbyLocationsMapView *newbusinessNearbyLocationMapView =[[BusinessNearbyLocationsMapView alloc]initWithNibName:@"BusinessNearbyLocationsMapView" bundle:nil];
    newbusinessNearbyLocationMapView.url =[NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%f,%f&daddr=%@,%@",appDelegate.userlatitude,appDelegate.userlongitude,lat,lng];
    [newbusinessNearbyLocationMapView.url retain];
    [self.navigationController pushViewController:newbusinessNearbyLocationMapView animated:YES];
    [newbusinessNearbyLocationMapView relese];

}

これがお役に立てば幸いです...

于 2012-12-25T07:04:32.960 に答える