3

ユーザーの場所と残りのコードに問題があります...

特定の場所の Foursquare API からレストランを取得するコードを開発しました。私が解決しようとしている問題はこれです:

これは、情報を取得するために使用する URL 文字列です (緯度と経度は、作業を開始するためだけにハードコーディングされています)。

https://api.foursquare.com/v2/venues/search?ll=51.51,-0.13&categoryId=4bf58dd8d48988d1c4941735&radius=3000&oauth_token=A5ZDWL2DLXPZCQ3ZJESVOAKDMPQHSNNVWC3UMVOUOXPQHWRT&v=20121105

URL 文字列を 3 つの部分に分けました。2 番目の部分は現在のユーザーの場所です。

NSString *firstStringPart = @"https://api.foursquare.com/v2/venues/search?ll=";
    NSString *secondStringPart = currentLocationString;
    NSString *thirdStringPart = @"&categoryId=4bf58dd8d48988d1c4941735&radius=3000&oauth_token=A5ZDWL2DLXPZCQ3ZJESVOAKDMPQHSNNVWC3UMVOUOXPQHWRT&v=20121105";

そして、文字列を一緒に追加したい

NSString *connectedUrlString = [[firstStringPart stringByAppendingString:secondStringPart] stringByAppendingString:thirdStringPart];

次のように2番目の文字列部分の座標を配置すると、すべて機能します。

NSString *secondStringPart = @"51.51,-0.13";

ユーザーの場所を取得するための小さなテスト プロジェクトも作成しましたが、次のコードで動作しています。

@interface ViewController ()

@end

@implementation ViewController

@synthesize locationManager, location;


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self setLocationManager:[[CLLocationManager alloc] init]];
    [locationManager setDelegate:self];
    [locationManager setDistanceFilter:kCLDistanceFilterNone];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    [locationManager startUpdatingLocation];

}

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *currentLocation = [locations lastObject];

    NSString *lat = [NSString stringWithFormat:@"%.2f", currentLocation.coordinate.latitude];
    NSString *lon = [NSString stringWithFormat:@"%.2f", currentLocation.coordinate.longitude];

    location = [NSString stringWithFormat:@"%@,%@", lat, lon];

    NSLog(@"%@", location);
    [locationManager stopUpdatingLocation];

}

NSLog を使用すると、必要な正しい出力が得られます。

最後に、私の質問は、ユーザーの場所を変数で取得し、ビューの DidLoad メソッドNSString *secondStringPart = currentLocationString;で [locationManager startUpdatingLocation] の直後に使用する方法です。

それとも私は何か間違ったことをしていますか?

助けていただければ幸いです、ありがとう...

4

1 に答える 1

0

解決済み...

私は問題を解決しました...

コードを- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locationsメソッドに移動し、その中ですべてを行う必要がありました...

于 2012-11-13T12:35:32.617 に答える