CLGeocoder reverseGeocodeLocation无法产生一致的结果

时间:2012-07-19 11:07:00

标签: iphone objective-c ios5 xcode4.2

对于两个不同的坐标系,我无法从CLGeocoder reverseGeocodeLocation获得相同的结果。 例如。

CLLocation *tempLocation = [[CLLocation alloc] initWithLatitude:37.785834 longitude:-122.406417]; // coordinate for apple head quater
CLGeocoder *geocoder = [[CLGeocoder alloc] init];    
[geocoder reverseGeocodeLocation:tempLocation completionHandler:
 ^(NSArray* placemarks, NSError* error){
     if ([placemarks count] > 0)
     {
         CLPlacemark *placemark = [placemarks objectAtIndex:0];             
         NSLog(@" %@",placemark.addressDictionary); 
     }
 }];

输出:

City = "San Francisco";
Country = "United States";
CountryCode = US;
FormattedAddressLines =     (
    "Apple Store, San Francisco",
    "1 Stockton St",
    "San Francisco, CA  94108-5805",
    "United States"
);
Name = "Apple Store, San Francisco";
PostCodeExtension = 5805;
State = California;
Street = "1 Stockton St";
SubAdministrativeArea = "San Francisco";
SubLocality = "Union Square";
SubThoroughfare = 1;
Thoroughfare = "Stockton St";
ZIP = 94108;

但是当我使用

CLLocation tempLocation = [[CLLocation alloc] initWithLatitude:27.672654 longitude:85.313744]; 
///CLLocation *tempLocation = [[CLLocation alloc] initWithLatitude:37.785834 longitude:-122.406417]; 
CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 
[geocoder reverseGeocodeLocation:tempLocation completionHandler: 
 ^(NSArray placemarks, NSError* error) { 
    if ([placemarks count] > 0) { 
        CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
        NSLog(@" %@",placemark.addressDictionary); 
    }
}]; 

,输出

{ 
Country = Nepal; 
CountryCode = NP; 
FormattedAddressLines = ( "Pulchowk Road", Nepal ); 
Name = "Pulchowk Road"; 
State = Bagmati; 
Street = "Pulchowk Road"; 
Thoroughfare = "Pulchowk Road"; 
} 

问题是为什么我没有得到所有的信息。对于例如City,ZIP ..缺失。我应该如何在程序中处理这个问题。

1 个答案:

答案 0 :(得分:1)

地理定位始终使用最佳可用信息。最有可能在尼泊尔,与Apple或其服务提供商签约的地图公司没有提供您所缺少的信息。这更像是合同/服务质量问题,我认为您无法做任何事情。除了尝试优化您的应用程序以提供最佳的用户体验,即使它只有不完整的数据。