IOS

Detailed Explanation of iOS Native Map Geocoding and Anti Geocoding of


When we want to realize the function in App: input the land name, encode it as longitude and latitude, and realize the navigation function.

Then, I need to use the geocoding function in the native map, while Core Location mainly includes positioning and geocoding (including anti-coding) functions.

Import in File

#import <CoreLocation/CoreLocation.h>

Geocoding:

/**
  Geocoding
 */
- (void)geocoder {

  CLGeocoder *geocoder=[[CLGeocoder alloc]init];

  NSString *addressStr = @" Baoan District, Shenzhen City, Guangdong Province ";// Location information

  [geocoder geocodeAddressString:addressStr completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
    if (error!=nil || placemarks.count==0) {
      return ;
    }
    // Create placemark Object
    CLPlacemark *placemark=[placemarks firstObject];
    // Longitude
    NSString *longitude =[NSString stringWithFormat:@"%f",placemark.location.coordinate.longitude];
    // Latitude
    NSString *latitude =[NSString stringWithFormat:@"%f",placemark.location.coordinate.latitude];

    NSLog(@" Longitude: %@ Latitude: %@",longitude,latitude);

  }];

}

Geographic back coding:

/**
  Geographic back coding
 */
- (void)reverseGeocoder{
  // Create a geocoding object
  CLGeocoder *geocoder=[[CLGeocoder alloc]init];

  // Longitude
  NSString *longitude = @"113.23";
  // Latitude
  NSString *latitude = @"23.16";


  // Creation location
  CLLocation *location=[[CLLocation alloc]initWithLatitude:[latitude floatValue] longitude:[longitude floatValue]];


  // Inverse geocoding
  [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
    // Judge whether there is an error or placemarks Whether it is empty or not
    if (error !=nil || placemarks.count==0) {
      NSLog(@"%@",error);
      return ;
    }
    for (CLPlacemark *placemark in placemarks) {
      // Detailed address
      NSString *addressStr = placemark.name;
      NSLog(@" Detailed address 1 : %@",addressStr);
      NSLog(@" Detailed address 2 : %@",placemark.addressDictionary);
      NSLog(@" Detailed address 3 : %@",placemark.locality);
    }

  }];
}