#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>
Π Π²ΡΠ΅. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Core Location ΠΈ Map Kit ΠΎΠΊΠ°ΠΆΡΡΡΡ Π² Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .
9.1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΊΠ°ΡΡΡ Π² ΡΠΊΡΠ°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° MKMapView, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ ΠΊ Π²ΠΈΠ΄Ρ Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ ΠΏΠΎΠ΄Π²ΠΈΠ΄Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²Π°ΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ. h-ΡΠ°ΠΉΠ»Π° ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ MKMapView, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΡΠΎΡ Π²ΠΈΠ΄ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΠΏΠΎΠ»Π½ΠΎΡΠΊΡΠ°Π½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅:
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface ViewController ()
@property (nonatomic, strong) MKMapView *myMapView;
@end
@implementation ViewController
ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π²ΠΈΠ΄Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ MKMapView. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π° (.m-ΡΠ°ΠΉΠ»Π΅) ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΊΠ°ΡΡΡ ΠΈ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π΄Π»Ρ Π½Π΅Π΅ ΡΠΈΠΏ Satellite:
β (void)viewDidLoad{
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.myMapView = [[MKMapView alloc]
initWithFrame: self.view.bounds];
/* ΠΠ°Π΄Π°Π΅ΠΌ Satellite Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠΏΠ° ΠΊΠ°ΡΡΡ. */
self.myMapView.mapType = MKMapTypeSatellite;
self.myMapView.autoresizingMask =
UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight;
/* ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠ°ΡΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ Π²ΠΈΠ΄Ρ. */
[self.view addSubview: self.myMapView];
}
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° MKMapView Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΅ΠΌΡ ΡΠ°ΠΌΠΊΡ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ Π΅Π³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ, Π° ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠ°ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π°, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ΄Π²ΠΈΠ΄Π° ΠΊ Π²ΠΈΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅. Π Π²ΡΠ΅, ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΡΡΡ.
MKMapView β ΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ UIView. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠΌ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠΌ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ UIView. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΌΡ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ UIView Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΡΠ°Π²ΠΈΡΡ Π² Π²ΠΈΠ΄ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ backgroundColor.
ΠΡ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΡΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Ρ ΠΊΠ»Π°ΡΡΠ° MKMapView Π΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ mapType, Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΡΡΠ΅Π΅ ΡΠΈΠΏ ΠΊΠ°ΡΡΡ. ΠΠ°ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΏΡΡΠ½ΠΈΠΊΠΎΠ²ΠΎΠΉ, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΈΠ»ΠΈ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΠΎΠΉ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠ°ΡΡΠΎΠΉ ΡΠΏΡΡΠ½ΠΈΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (ΡΠΈΡ. 9.1).
Π ΠΈΡ. 9.1. ΠΠΈΠ΄ ΠΊΠ°ΡΡΡ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΡΠΎ ΡΠΏΡΡΠ½ΠΈΠΊΠ°
ΠΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ mapType ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° MKMapView. ΠΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
β’ MKMapTypeStandard β ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΊΠ°ΡΡΡ (Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ);
β’ MKMapTypeSatellite β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π²ΠΈΠ΄ ΠΊΠ°ΡΡΡ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΡΠΎ ΡΠΏΡΡΠ½ΠΈΠΊΠ° (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 9.1);
β’ MKMapTypeHybrid β Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΊΠ°ΡΡΡ Π½Π° ΡΠΏΡΡΠ½ΠΈΠΊΠΎΠ²ΡΡ.
9.2. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ»Π°ΡΡ ΡΠ²ΠΎΠ΅ΠΌΡ Π΄Π΅Π»Π΅Π³Π°ΡΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈΡΠ²ΠΎΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π΅Π»Π΅Π³Π°ΡΠ°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ MKMapViewDelegate, ΡΠ²ΠΎΠΉΡΡΠ²Ρ delegate, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ° MKMapView:
β (void)viewDidLoad{
[super viewDidLoad];
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ°ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Ρ Π½Π°Ρ Π²ΠΈΠ΄. */
self.myMapView = [[MKMapView alloc]
initWithFrame: self.view.bounds];
/* ΠΠ°Π΄Π°Π΅ΠΌ Satellite Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠΏΠ° ΠΊΠ°ΡΡΡ. */
self.myMapView.mapType = MKMapTypeSatellite;
self.myMapView.delegate = self;
self.myMapView.autoresizingMask =
UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight;
/* ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠ°ΡΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ Π²ΠΈΠ΄Ρ. */
[self.view addSubview: self.myMapView];
}
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ viewDidLoad, ΠΎΡΠ½ΠΎΡΡΡΠ΅ΠΌΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ MapView ΡΠΈΠΏΠ° MKMapView:
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface ViewController () <MKMapViewDelegate>
@property (nonatomic, strong) MKMapView *myMapView;
@end
@implementation ViewController
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΠ±ΡΠ΅ΠΊΡ, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° MKMapView, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ MKMapViewDelegate. ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΡ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΈ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ·Π΄Π½Π΅Π΅, Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π²ΠΈΠ΄Ρ. Π ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ MKMapViewDelegate ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΌΠ΅ΡΠΎΠ΄ mapViewWillStartLoadingMap:, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Π΄Π΅Π»Π΅Π³Π°ΡΠ° Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ°ΡΡΡ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ Π΄Π΅Π»Π΅Π³Π°Ρ Π΄Π»Ρ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΡΠΎ Π΅ΡΡΡ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ Π½Π΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Ρ ΠΈΠΌ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠ². ΠΡΠΎΡΡΠΎ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ, Π»ΠΈΡΠ΅Π½Π½ΡΠ΅ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠ², Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌΡΡ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ MKMapViewDelegate (Π·Π΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ, ΠΎ ΡΠ΅ΠΌ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ-Π΄Π΅Π»Π΅Π³Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° MKMapView):
β’ mapViewWillStartLoadingMap: β Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠ° Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ;
β’ mapView: viewForAnnotation: β Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠ° Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° MKAnnotationView ΡΠ½Π°Π±Π΄ΠΈΡΡ ΠΊΠ°ΡΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 9.4;
β’ mapViewWillStartLocatingUser: β ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠ° Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ ΠΏΡΠΈΡΡΡΠΏΠ°Π΅Ρ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 9.3;
β’ mapView: regionDidChangeAnimated: β Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠ° Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ΅Π³ΠΈΠΎΠ½, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ Π½Π° ΠΊΠ°ΡΡΠ΅.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π»Ρ 9.3 ΠΈ 9.4.
9.3. ΠΡΠΌΠ΅ΡΠΊΠ° ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡΠΈ ΡΠΈΡΠΎΡΡ ΠΈ Π΄ΠΎΠ»Π³ΠΎΡΡ ΡΠΎΠΉ ΡΠΎΡΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ CLLocationManager:
β (void)viewDidLoad {
[super viewDidLoad];
if ([CLLocationManager locationServicesEnabled]){
self.myLocationManager = [[CLLocationManager alloc] init];
self.myLocationManager.delegate = self;
[self.myLocationManager startUpdatingLocation];
} else {
/* ΠΠ΅ΠΎΠ»ΠΎΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ Π½Π΅ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
Π²ΠΊΠ»ΡΡΠΈΡΡ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ. */
NSLog(@"Location services are not enabled");
}
}
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ myLocationManager β ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠΈΠΏΠ° CLLocationManager. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄Π° Π΄Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠΌ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Location Manager).
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Core Location, Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π² ΡΠΎΡΡΠ°Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° SDK, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ iOS Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² iOS ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Settings (ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ), ΡΠΎ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° CLLocationManager, ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΠΈ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ.
ΠΠ±ΡΠ΅ΠΊΡ, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠΌ CLLocationManager, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ CLLocationManagerDelegate.
ΠΠΎΡ ΠΊΠ°ΠΊ ΠΌΡ ΠΎΠ±ΡΡΠ²ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π°ΡΠ΅Π³ΠΎ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π². h-ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π° (ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ CLLocationManager ΠΌΠΎΠΆΠ΅Ρ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ Π²ΠΈΠ΄Π°):
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface ViewController () <CLLocationManagerDelegate>
@property (nonatomic, strong) CLLocationManager *myLocationManager;
@end
@implementation ViewController
ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π½Π°ΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ:
β (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation{
/* ΠΠΎΠ»ΡΡΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½ΠΎΠ²ΠΎΠΌ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. */
NSLog(@"Latitude = %f", newLocation.coordinate.latitude);
NSLog(@"Longitude = %f", newLocation.coordinate.longitude);
}
β (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error{
/* ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. */
}
β (void)viewDidLoad {
[super viewDidLoad];
if ([CLLocationManager locationServicesEnabled]){