我们很多时候做项目的时候都选用通过手机获取定位,然后传数据给后台,这是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) {
//无法获取位置信息
}
}