CLGeocoder 反向地理编码无法产生一致的结果。

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"; 
} 

问题是为什么我没有获取到所有的信息。例如城市、邮政编码等都缺失了。在程序中如何处理这个问题。


请将代码放在“输入代码”的位置。 - Natan R.
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); }}];
- Black Tiger
{ Country = 尼泊尔; CountryCode = NP; FormattedAddressLines = ( "Pulchowk Road", 尼泊尔 ); Name = "Pulchowk Road"; State = 巴格马蒂; Street = "Pulchowk Road"; Thoroughfare = "Pulchowk Road"; } - Black Tiger
1个回答

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接