3

对于两个不同的坐标系,我无法从 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 .. 丢失。我应该如何在程序中处理这个问题。

4

1 回答 1

1

地理位置始终使用最佳可用信息。对于尼泊尔来说,与 Apple 或其服务提供商签约的地图公司很可能没有提供您所缺少的信息。这更像是一个合同/服务质量问题,我认为您无能为力。除非尝试优化您的应用程序以提供最佳的用户体验,即使它只有不完整的数据。

于 2012-07-19T13:31:36.363 回答