我正在使用此方法显示使用当前位置纬度和经度的位置字符串,但它显示的方式不同
NSString *urlString = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?latlng=%f,%f&sensor=false",location.coordinate.latitude, location.coordinate.longitude];
NSError* error;
NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString] encoding:NSASCIIStringEncoding error:&error];
NSData *data = [locationString dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSDictionary *dic = [[json objectForKey:@"results"] objectAtIndex:0];
NSArray* arr = [dic objectForKey:@"address_components"];
//Iterate each result of address components - find locality and country
NSString *cityName;
NSString *countryName;
for (NSDictionary* d in arr)
{
NSArray* typesArr = [d objectForKey:@"types"];
NSString* firstType = [typesArr objectAtIndex:0];
if([firstType isEqualToString:@"locality"])
cityName = [d objectForKey:@"long_name"];
if([firstType isEqualToString:@"country"])
countryName = [d objectForKey:@"long_name"];
}
NSString* locationFinal = [NSString stringWithFormat:@"%@,%@",cityName,countryName];
NSLog(@"Final Location %@ ",locationFinal);
但最终位置显示此类型: -
Final Location नठदिलà¥à¤²à¥,India
为何显示此类型?任何人都可以知道这一点。
答案 0 :(得分:0)
请提供API参数的语言。如果未提供语言,则地理编码器会尝试使用Accept-Language标头中指定的首选语言,或者发送请求的域的本地语言。
因此,请像使用语言参数一样替换代码。
2
再试一次。
答案 1 :(得分:0)
我认为这是一个未初始化的变量,它指向随机记忆。
尝试:
NSString *cityName = nil;
NSString *countryName = nil;
短信for
循环:
for (NSDictionary* d in arr)
{
// Add this after the existing code:
if (cityName && countryName)
break;
}
并在显示结果前检查错误:
if (cityName && countryName) {
NSString* locationFinal = [NSString stringWithFormat:@"%@,%@",cityName,countryName];
NSLog(@"Final Location %@ ",locationFinal);
} else {
NSLog(@"Failed to find location");
}
最后,您的JSON处理代码根本不进行错误检查。这是一个错误。