iPhone - Get City name from Latitude and Longtiude

前端 未结 10 942
难免孤独
难免孤独 2020-12-05 06:04

I want get my Current City name in my iPhone App.

I\'m currently getting the latitude and longitude using CLLocationManager and than i am passing my coordinates into

10条回答
  •  感动是毒
    2020-12-05 06:18

    I improved @Constantin Saulenco great answer- the json results in not always ordered in same order - so city is not always at the same index - this func will search for the right one. Added country as well.

    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];
    

提交回复
热议问题