地圖類開發應用中,離不開地理位置跟MKMapView的使用,下面就記錄下自己在使用這兩個東西中學到的。
不過並不是所有蘋果的設備都支持地理位置,我們在使用前應該做個判斷,代碼如下: 1 BOOL locationAvailabe = [CLLocationManager locationServicesEnabled]; 2 BOOL magnetometerAvailable = [CLLocationManager headingAvailable]; 在地理位置中,我們用到主要類就是:CLLocationManager,關於它的常見代碼如下: 1 CLLocationManager *locationManager = [[CLLocationManager alloc] init]; 2 locationManager.delegate = self; 3 locationManager.distanceFilter = 1000; // 1km 4 locationManager.desiredAccuracy = kCLLocationAccuracyKilometer; 5 if ([CLLocationManager locationServicesEnabled] ) { 6 [locationManager startUpdatingLocation]; 7 } else { 8 NSLog(@"Location services not enabled."); 9 } 通過設置distancFilter我們可以做到只有位置變動在1公裡以上的時候才會進行通知,然後我們通過設置delegate,實現自己相應的邏輯,常見實現的兩個協議如下: 1 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 2 NSLog(@"Moved from %@ to %@", oldLocation, newLocation); 3 } 4 - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { 5 NSLog(@"Received Core Location error %@", error); 6 [manager stopUpdatingLocation]; 7 } 上面就是關於地理位置的常見用法,當然還有CLLocationCoorinate2D類,這是一個關於區域的地理類。 好了,接下來說說MKMapView這個控件,這是一個地圖應用常規控件,常用代碼如下: 1 MKMapView.layer.cornerRadius = 10.0; //園角 2 MKMapView。showsUserLocation = YES; 3 [MKMapView setRegion: animated:] //使地圖顯示哪個區域附近的信息