iOS定位和位置信息获取

定位和反查位置信息要加载两个动态库 CoreLocation.framework 和 MapKit.framework 一个获取坐标一个提供反查 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// appDelgate.h
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>
 
@interface AppDelegate : UIResponder <UIApplicationDelegate,CLLocationManagerDelegate,MKReverseGeocoderDelegate>
 
@property (strong, nonatomic) UIWindow *window;
 
@end
 
 
//
//  AppDelegate.m
//  location
//
//  Copyright (c) 2013年 TestApp. All rights reserved.
//
 
#import "AppDelegate.h"
 
 
@implementation AppDelegate
 
- ( BOOL )application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
     // Override point for customization after application launch.
     self.window.backgroundColor = [UIColor whiteColor];
     [self.window makeKeyAndVisible];
     UIButton *button = [UIButton buttonWithType:UIButtonTypeContactAdd];
     button.frame = CGRectMake(0, 100, 100, 30);
     [button setTitle:@ "定位" forState:UIControlStateNormal];
     [button addTarget:self action:@selector(test) forControlEvents:UIControlEventTouchUpInside];
     
     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 150, 320, 30)];
     label.tag = 101;
     label.text = @ "等待定位中...." ;
     [self.window addSubview:label];
     [label release];
     [self.window addSubview:button];
     return YES;
 
}
 
-( void ) test {
     
     CLLocationManager *locationManager = [[CLLocationManager alloc] init];
     // 设置定位精度,十米,百米,最好
     [locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
     locationManager.delegate = self;
     
     // 开始时时定位
     [locationManager startUpdatingLocation];
}
 
// 错误信息
-( void )locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
     NSLog(@ "error" );
}
 
// 6.0 以上调用这个函数
-( void )locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
     
     NSLog(@ "%d" , [locations count]);
     
     CLLocation *newLocation = locations[0];
     CLLocationCoordinate2D oldCoordinate = newLocation.coordinate;
     NSLog(@ "旧的经度:%f,旧的纬度:%f" ,oldCoordinate.longitude,oldCoordinate.latitude);
     
//    CLLocation *newLocation = locations[1];
//    CLLocationCoordinate2D newCoordinate = newLocation.coordinate;
//    NSLog(@"经度:%f,纬度:%f",newCoordinate.longitude,newCoordinate.latitude);
     
     // 计算两个坐标距离
     //    float distance = [newLocation distanceFromLocation:oldLocation];
     //    NSLog(@"%f",distance);
     
     [manager stopUpdatingLocation];
     
     //------------------位置反编码---5.0之后使用-----------------
     CLGeocoder *geocoder = [[CLGeocoder alloc] init];
     [geocoder reverseGeocodeLocation:newLocation
                    completionHandler:^(NSArray *placemarks, NSError *error){
                        
                        for (CLPlacemark *place in placemarks) {
                            UILabel *label = (UILabel *)[self.window viewWithTag:101];
                            label.text = place.name;
                            NSLog(@ "name,%@" ,place.name);                       // 位置名
//                           NSLog(@"thoroughfare,%@",place.thoroughfare);       // 街道
//                           NSLog(@"subThoroughfare,%@",place.subThoroughfare); // 子街道
//                           NSLog(@"locality,%@",place.locality);               // 市
//                           NSLog(@"subLocality,%@",place.subLocality);         // 区
//                           NSLog(@"country,%@",place.country);                 // 国家
                        }
                        
                    }];
     
}
 
// 6.0 调用此函数
-( void )locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
     NSLog(@ "%@" , @ "ok" );
}
 
 
@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值