您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> ios >> 正文

iOS8 根据经纬度显示地名

作者:佚名    责任编辑:admin    更新时间:2022-06-22

   我们很多时候做项目的时候都选用通过手机获取定位,然后传数据给后台,这是iOS8根据经纬度显示地名的demo

  //1.导入框架

  //

  // NearByViewController.m

  // nearDemo

  //

  // Created by apple on 14/12/5.

  // Copyright (c) 2014年 youdianshang. All rights reserved.

  //

  #import

  #import

  @interface NearByViewController ()

  {

  NSUserDefaults *defaluts;

  NSString * jingduStr;

  NSString *weiduStr;

  NSString *LocationAddress;

  }

  @property(nonatomic,retain)CLLocationManager *locationManager;

  @property(strong,nonatomic)UILabel *positionLabel;

  /*

  经纬度相关设置

  */

  -(void)getLocationAll

  {

  self.locationManager = [[CLLocationManageralloc]init];

  _locationManager.delegate =self;

  _locationManager.desiredAccuracy =kCLLocationAccuracyBest;

  _locationManager.distanceFilter =10;

  [_locationManagerrequestAlwaysAuthorization];//添加这句

  [_locationManagerstartUpdatingLocation];

  }

  /*

  //通过经纬度得到当前地理位置

  -(void)change{

  defaluts=[NSUserDefaultsstandardUserDefaults];

  CLLocationCoordinate2D coordinate;

  coordinate.latitude = [[NSStringstringWithFormat:@"%@",jingduStr]floatValue];

  coordinate.longitude = [[NSStringstringWithFormat:@"%@",weiduStr]floatValue];

  CLLocation *newLocation=[[CLLocationalloc]initWithLatitude:coordinate.latitudelongitude: coordinate.longitude];

  CLGeocoder *geocoder=[[CLGeocoderalloc] init];

  [geocoder reverseGeocodeLocation:newLocationcompletionHandler:^(NSArray* placemarks,NSError* error)

  {

  MKPlacemark*placemark = [placemarks objectAtIndex:0];

  LocationAddress = [NSStringstringWithFormat:@"%@%@%@%@", placemark.locality, placemark.subLocality,placemark.thoroughfare, placemark.subThoroughfare];

  [defaluts setObject:LocationAddress forKey:@"address"];

  NSLog(@"终极目标:1:%@2:%@3:%@4:%@", placemark.locality, placemark.subLocality,placemark.thoroughfare,placemark.subThoroughfare);

  }];

  #pragma mark--实现CLLocationManagerDelegate的代理方法,获取地理位置(镔)===========================================================================

  //(1)获取到位置数据,返回的是一个CLLocation的数组,一般使用其中的一个

  - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

  {

  CLLocation *currLocation = [locations lastObject];

  NSLog(@"经度=%f纬度=%f高度=%f", currLocation.coordinate.latitude, currLocation.coordinate.longitude, currLocation.altitude);

  jingduStr =[NSStringstringWithFormat:@"%f", currLocation.coordinate.latitude];

  weiduStr =[NSStringstringWithFormat:@"%f", currLocation.coordinate.longitude];

  NSLog(@"jijijijijij:%@",jingduStr);

  [self change];

  }

  //(2)获取用户位置数据失败的回调方法,在此通知用户

  - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

  {

  if ([error code] ==kCLErrorDenied)

  {

  //访问被拒绝

  }

  if ([errorcode] == kCLErrorLocationUnknown) {

  //无法获取位置信息

  }

  }