2013-04-12 156 views

回答

8

您可以使用支持將地址轉換爲座標的類CLGeocoder,反之亦然。例如:

[geocoder geocodeAddressString:@"<postcode here>" 
      completionHandler:^(NSArray* placemarks, NSError* error){ 
       for (CLPlacemark* aPlacemark in placemarks) 
       { 
        // Process the placemark. 
       } 
}]; 

有很多不同的方法可能需要使用。例如,您可以將搜索限制在特定區域。

+0

嗯,不知道它可以用這種方式。非常感謝 – user1248568

+0

不準確..不高達10%..假回答... –

-1

使用此

-(CLLocationCoordinate2D) getLocationFromAddressString:(NSString*) addressStr { 

double latitude = 0, longitude = 0; 
NSString *esc_addr = [addressStr 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; 

}

這種方法使用谷歌API傳遞時,地址在此參數返回座標

+1

該解決方案每天限制2500個請求,同時結果必須在goolge地圖上顯示,因此它不適用於iOS6 。 – javienegas

相關問題