当前位置: 代码迷 >> 综合 >> iOS8 根据经纬度显示地名
  详细解决方案

iOS8 根据经纬度显示地名

热度:15   发布时间:2024-01-11 22:19:24.0

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

//1.导入框架

//

//  NearByViewController.m

//  nearDemo

//

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

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

//

#import <CoreLocation/CoreLocation.h>

#import <MapKit/MapKit.h>

@interface NearByViewController ()<UITableViewDataSource,UITableViewDelegate,CLLocationManagerDelegate,DataRequestManagerDelegate>


{

    NSUserDefaults *defaluts;

    NSString * jingduStr;

    NSString *weiduStr;

    NSString *LocationAddress;

}

@property(nonatomic,retain)CLLocationManager *locationManager;

@property(strong,nonatomic)UILabel *positionLabel;

/*

  经纬度相关设置

 

 */


-(void)getLocationAll

{


    self.locationManager = [[CLLocationManager alloc]init];

    _locationManager.delegate = self;

    _locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    _locationManager.distanceFilter = 10;

    [_locationManager requestAlwaysAuthorization];//添加这句

    [_locationManager startUpdatingLocation];

   

}

/*

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

-(void)change{

    defaluts=[NSUserDefaults standardUserDefaults];


    CLLocationCoordinate2D coordinate;

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

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


    CLLocation *newLocation=[[CLLocation alloc]initWithLatitude:coordinate.latitude longitude: coordinate.longitude];

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

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

     {

         MKPlacemark*placemark = [placemarks objectAtIndex:0];

                  LocationAddress = [NSString stringWithFormat:@"%@%@%@%@",  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 =[NSString stringWithFormat:@"%f", currLocation.coordinate.latitude];

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

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

     [self change];


    }

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

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

{

    if ([error code] == kCLErrorDenied)

    {

        //访问被拒绝

    }

    if ([error code] == kCLErrorLocationUnknown) {

        //无法获取位置信息

    }

}