2012-09-19 22 views
2

我是iOS新手,所以如果有任何幫助,將不勝感激。 我想從地址獲取經度和緯度,早些時候代碼工作正常,但現在JSON數據將變爲空。在iOS的經度和緯度的谷歌查詢沒有得到json響應?

這裏我的示例代碼,

 url = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?address=%@&sensor=false",appDelegate.sAddress]; 

    url=[url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSLog(@"Address URL: %@",url); 

    //Formulate the string as a URL object. 
    NSURL *requestURL=[NSURL URLWithString:url]; 
    NSData* data = [NSData dataWithContentsOfURL: requestURL]; 

    NSString *returnString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

    NSLog(@"my Coordinate : %@",returnString); 

    NSError* error; 
    NSDictionary* json = [NSJSONSerialization 
          JSONObjectWithData:data 
          options:kNilOptions 
          error:&error]; 

但我得到的輸出爲空。

所以請幫助我。

謝謝!

+0

考慮使用[CLGeocoder類](https://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLGeocoder_class/Reference/Reference.html),而不是手動直接查詢。 – Anna

回答

0

你必須構建你returnString在實際接收數據的方法如下:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 

退房this關於如何使用NSURLConnection的和委託方法的其他信息。

+0

嘿Brayden,謝謝你的回覆人 – Sawant

+0

沒問題!標記爲正確的,如果它幫助你:) – Brayden

0

我會說你錯過了所有重要的「請求」 ......

這是我做的。希望它有幫助:

NSString *encodedAddress = (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge_retained CFStringRef)searchBar.text, NULL, (CFStringRef) @"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8); 

    NSString* searchURL = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?address=%@&sensor=true",encodedAddress]; 
    NSError* error = nil; 
    NSURLResponse* response = nil; 
    NSMutableURLRequest* request = [[NSMutableURLRequest alloc] init]; 

    NSURL* URL = [NSURL URLWithString:searchURL]; 
    [request setURL:URL]; 
    [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; 
    [request setTimeoutInterval:30]; 

    NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

    if (error){ 
     NSLog(@"Error performing request %@", searchURL); 
     return; 
    } 

    NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    if (jsonString!=nil){ 
     NSLog(@"%@",jsonString); 
    } 
+0

如果你喜歡答案,請標記爲正確。祝你好運! – minjiera

1

感謝您的回覆,所有這些讓我學到了很多東西。 作爲我的朋友之一,只是告訴我解決方案,所以我與你分享。

下面是代碼,

url = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?address=%@&sensor=false",appDelegate.sAddress]; 

url=[url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSLog(@"Address URL: %@",url); 

//Formulate the string as a URL object. 
NSURL *requestURL=[NSURL URLWithString:url]; 
NSData* data = [NSData dataWithContentsOfURL: requestURL]; 

NSString *returnString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

SBJSON *parser = [[SBJSON alloc] init]; 
NSDictionary *locationResult = [parser objectWithString:returnString]; 
//[reverseGeoString copy]` 

,其工作的罰款。

但仍然有一個問題,爲什麼這個happen.As早些時候,代碼工作不錯,但它突然停止工作。

相關問題