0

私のアプリには、一連の場所とそれらの相対的な注釈があります。私はそれをクリックするボタンを持っています、私はグーグルストリートビューを取得するためにURLウェブサービスを呼び出すメソッドに行きます。

私のコードは次のとおりです。

- (NSString*)urlStreetview:(id<MKAnnotation>)annotation{

    CLLocation *pinLocation = [[CLLocation alloc] initWithLatitude:annotation.coordinate.latitude longitude:annotation.coordinate.longitude];

    NSLog(@"lat:%f",pinLocation.coordinate.latitude);
    NSLog(@"lon:%f",pinLocation.coordinate.longitude);


    NSString *lat_string = [[NSString alloc] initWithFormat:@"%f", pinLocation.coordinate.latitude];
    NSString *lon_string = [[NSString alloc] initWithFormat:@"%f", pinLocation.coordinate.longitude];


    NSString *url1 = [NSString stringWithFormat:@"http:myweb/streetview.php"];

    NSString *url2 =  [url1 stringByAppendingString: @"?lat="];
    NSString *url3 =  [url2 stringByAppendingString:lat_string];
    NSString *url4 =  [url3 stringByAppendingString:@"&lon="];
    NSString *url  =  [url4 stringByAppendingString:lon_string];


    NSLog(@"url:%@",url);
    return url;
}

以前のメソッドを作成して、アノテーションのLatLongで構成されるURLを作成しました。

注釈ピンにPressMeというボタンがあります。プッシュするときに、前のメソッドを実行してURLを呼び出したいのですが、選択したアノテーションをstreetViewメソッドに渡す方法がわかりません。

- (IBAction)PressMe:(id)sender
{
    UIViewController *webViewController = [[[UIViewController alloc] init] autorelease];
    UIWebView *uiWebView = [[[UIWebView alloc] initWithFrame: CGRectMake(0,0,320,480)] autorelease];

    [uiWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: [self urlStreetview: ????]]]];      //HERE IS MY MY PROBLEM

    [webViewController.view addSubview: uiWebView];
    webViewController.title = @"web bar";
    [self.navigationController pushViewController:webViewController animated:YES];

    //[[self navigationController] pushViewController:thirdViewController animated:YES];
}

前もって感謝します!

4

1 に答える 1

1

私は自分の質問に自分で答えるつもりです。私は自分の問題を解決するだけで、それは完全に機能します。このコードでは、アノテーションマップキットアノテーションのsteetViewgoogleサービスを使用するためにWebビューを表示できます。明らかに、私は比較的新しいiphone開発者なので、誰かが追加/提案/改善したい場合は、彼を歓迎します。

私のボタンの実装:

- (IBAction)PressMe:(id)sender
{
    UIViewController *webViewController = [[[UIViewController alloc] init] autorelease];
    UIWebView *uiWebView = [[[UIWebView alloc] initWithFrame: CGRectMake(0,0,320,480)] autorelease];

    [uiWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: self.urlStreetview]]];

    [webViewController.view addSubview: uiWebView];
    webViewController.title = @"web bar";
    [self.navigationController pushViewController:webViewController animated:YES];

    //[[self navigationController] pushViewController:thirdViewController animated:YES];
}

このボタンを使用して、(次の)メソッド「urlStreetview」を呼び出します。アノテーションを選択して、適切なGETphpパラメーターを使用して完全なURLを作成するために文字列を作成します。URLは、Google APIストリートビューを呼び出すことができる私の(非常に単純な)Webサービスの方向です。

- (NSString*)urlStreetview{

    //there can only be one selected annotation so get the one at index 0
    id<MKAnnotation> selectedAnnotation = [_mapView.selectedAnnotations objectAtIndex:0];

    CLLocation *pinLocation = [[CLLocation alloc] initWithLatitude:selectedAnnotation.coordinate.latitude longitude:selectedAnnotation.coordinate.longitude];

//これで注釈座標が選択されたので、urladdingoをベースurl:http://myurl/streetview.php、GET部分、つまりlatlon座標に合成できるようになりました。

    NSString *lat_string = [[NSString alloc] initWithFormat:@"%f", pinLocation.coordinate.latitude];
    NSString *lon_string = [[NSString alloc] initWithFormat:@"%f", pinLocation.coordinate.longitude];

    NSString *url1 = [NSString stringWithFormat:@"http://myurl/streetview.php"];

    NSString *url2 =  [url1 stringByAppendingString: @"?lat="];
    NSString *url3 =  [url2 stringByAppendingString:lat_string];
    NSString *url4 =  [url3 stringByAppendingString:@"&lon="];
    NSString *url  =  [url4 stringByAppendingString:lon_string];

    NSLog(@"url:%@",url);
    return url;
}

お役に立てば幸いです!

于 2012-06-13T18:17:03.070 に答える