2012-03-29 60 views
-1

我得到的位置地址的總地址和座標,但我只需要座標顯示在谷歌地圖上。 iPhone如何可能?如何從內容的總地址獲取座標?

- (void)geocode { 
    [SVGeocoder geocode:addressField.text 
      completion:^(NSArray *placemarks, NSError *error) { 
       UIAlertView *alertView; 

       if(!error && placemarks) { 
        SVPlacemark *placemark = [placemarks objectAtIndex:0]; 

        NSLog(@"%@",placemarks); 
        alertView = [[UIAlertView alloc] initWithTitle:@"Placemark Found!" message:[placemark description] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
       } else { 
        alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:[error description] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
       } 

       [alertView show]; 
       [alertView release]; 
      }]; 

的地理編碼

的響應 「{\ n地址= {\ N市=納爾戈恩達; \ n國家= 印度; \ n COUNTRYCODE = IN; \ N狀態= \」 Andhra Pradesh \「; \ n}; \ n座標= {\ n緯度= \」17.05239 \「; \ n經度= \」79.26718 \「; \ n}; \ n
formattedAddress = \」Nalgonda,印度安得拉邦「; \ n}」

+0

只需閱讀文檔(反向地理編碼)或嘗試使用stackoverflow上的搜索功能,確保我已經看到此問題。 – Pochi 2012-03-29 07:24:01

+1

歡迎來到Stack Overflow。請閱讀[FAQ](http://stackoverflow.com/faq)。你真的應該改善你現有的問題(http://stackoverflow.com/questions/9920640/how-to-get-latitude-and-longitude-from-a-full-address-country-city-etc)而不是打開一個新的一個。 – 2012-03-29 10:22:10

+1

我把你之前的問題合併到這個問題中,因爲這是一個更好的問題。但是,未來,請編輯您的原件。 – 2012-03-29 13:01:48

回答

3

試試這個

- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address 
{ 
    double latitude = 0, longitude = 0; 
    NSString *esc_addr = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr]; 
    NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL]; 
    if (result) { 
     NSScanner *scanner = [NSScanner scannerWithString:result]; 
     if ([scanner scanUpToString:@"\"lat\":" intoString:nil] && [scanner scanString:@"\"lat\":" intoString:nil]) { 
      [scanner scanDouble:&latitude]; 
      if ([scanner scanUpToString:@"\"lng\":" intoString:nil] && [scanner scanString:@"\"lng\":" intoString:nil]) { 
       [scanner scanDouble:&longitude]; 
      } 
     } 
    } 
    CLLocationCoordinate2D center; 
    center.latitude = latitude; 
    center.longitude = longitude; 
    return center; 
} 
+1

爲什麼使用google maps api(直接),當你在Obj-C中準備好所有的類時? – Francesco 2012-03-29 07:35:19