}
β (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error{
/* ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. */
}
β (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");
}
}
ΠΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° startUpdateLocation, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ CLLocationManager, ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π΄Π΅Π»Π΅Π³Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΡΠ΄Π°Π»ΠΎΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² location Manager: didUpdateToLocation: fromLocation: ΠΈ locationManager: didFailWithError: ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄Π΅Π»Π΅Π³Π°ΡΠ°, ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
9.4. ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² Π² ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π½Π° ΠΊΠ°ΡΡΠ΅.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ Π΄Π»Ρ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΠΈΠ΄ΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ.
1. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ MyAnnotation.
2. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ MKAnnotation.
3. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠΈΠΏΠ° CLLocationCoordinate2D Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ coordinate. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π·Π°Π΄Π°Π»ΠΈ ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ°ΠΊ readonly (ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ coordinate Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ MKAnnotation ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ readonly.
4. ΠΠ°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ (Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π²Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠΈΠΏΠ° NSString, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ title ΠΈ subtitle, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ ΠΏΠΎΠ΄Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²Π°ΡΠ΅Π³ΠΎ Π°Π½Π½ΠΎΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°. ΠΠ±Π° ΡΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄ΡΡ readonly.
5. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° CLLocationCoordinate2D. Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ 3. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ readonly, Π΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π° Π²Π½Π΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π·Π΄Π΅ΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΠΎΡΡΠ΅Π΄ΠΎΠ²Π°Π½Π½ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ. Π’Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΡ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠΌ ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ title ΠΈ subtitle.
6. ΠΠ½ΡΡΠ°Π½ΡΠΈΡΡΠΉΡΠ΅ ΠΊΠ»Π°ΡΡ MyAnnotation ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ ΠΊ Π²Π°ΡΠ΅ΠΉ ΠΊΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° addAnnotation:, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π³ΠΎΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ MKMapView.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π Π΅ΡΠ΅Π½ΠΈΠ΅Β» Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ MKAnnotation, Π° ΠΏΠΎΠ·ΠΆΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅ΠΌΡ ΠΊΠ°ΡΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. h-ΡΠ°ΠΉΠ» ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΊ:
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface MyAnnotation: NSObject <MKAnnotation>
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy, readonly) NSString *title;
@property (nonatomic, copy, readonly) NSString *subtitle;
β (instancetype)initWithCoordinates:(CLLocationCoordinate2D)paramCoordinates
title:(NSString *)paramTitle
subTitle:(NSString *)paramSubTitle;
@end
Π.m-ΡΠ°ΠΉΠ»Π΅ ΠΊΠ»Π°ΡΡΠ° MyAnnotation ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ»Π°ΡΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
#import Β«MyAnnotation.hΒ»
@implementation MyAnnotation
β (instancetype)initWithCoordinates:(CLLocationCoordinate2D)paramCoordinates
title:(NSString *)paramTitle
subTitle:(NSString *)paramSubTitle{
self = [super init];
if (self!= nil){
coordinate = paramCoordinates;
title = paramTitle;
subtitle = paramSubTitle;
}
return(self);
}
@end
ΠΠΎΠ·ΠΆΠ΅ ΠΌΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π³ΠΎ ΠΊ Π½Π°ΡΠ΅ΠΉ ΠΊΠ°ΡΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊ. m-ΡΠ°ΠΉΠ»Ρ ΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄:
#import Β«ViewController.hΒ»
#import Β«MyAnnotation.hΒ»
#import <MapKit/MapKit.h>
@interface ViewController () <MKMapViewDelegate>
@property (nonatomic, strong) MKMapView *myMapView;
@end
@implementation ViewController
β (void)viewDidLoad {
[super viewDidLoad];
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ°ΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΠΊΠ°ΠΊ ΠΈ Π½Π°Ρ Π²ΠΈΠ΄. */
self.myMapView = [[MKMapView alloc]
initWithFrame: self.view.bounds];
self.myMapView.delegate = self;
/* ΠΠ°Π΄Π°Π΅ΠΌ Π΄Π»Ρ ΠΊΠ°ΡΡΡ ΡΠΈΠΏ Standard. */
self.myMapView.mapType = MKMapTypeStandard;
self.myMapView.autoresizingMask =
UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight;
/* ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π΅ ΠΊ Π½Π°ΡΠ΅ΠΌΡ Π²ΠΈΠ΄Ρ. */
[self.view addSubview: self.myMapView];
/* ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. */
CLLocationCoordinate2D location =
CLLocationCoordinate2DMake(50.8219 16929 07181, -0.13 81176 71012 87842);
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. */
MyAnnotation *annotation =
[[MyAnnotation alloc] initWithCoordinates: location
title:@"My Title"
subTitle:@"My Sub Title"];
/* Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π° ΠΊΠ°ΡΡΡ. */
[self.myMapView addAnnotation: annotation];
@end
ΠΠ° ΡΠΈΡ. 9.2 ΠΏΠΎΠΊΠ°Π·Π°Π½ Π²ΡΠ²ΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠΈΠΌΡΠ»ΡΡΠΎΡΠ΅ iPhone.
Π ΠΈΡ. 9.2. ΠΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠ°ΡΠΊΠ΅Ρ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ Π½Π° ΠΊΠ°ΡΡΠ΅
9.5. ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π½ΠΎΡΠ²Π΅ΡΠ½ΡΡ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² Π² ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠ°ΡΠΊΠ΅ΡΡ-ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΡΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠΎΡΠΊΠΈ Π½Π° ΠΊΠ°ΡΡΠ΅, β ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΌΠ°ΡΠΊΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ²Π΅ΡΠΎΠ², Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΠΉΡΠ΅ Π²Π°ΡΠ΅ΠΌΡ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π²ΠΈΠ΄Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ MKPinAnnotationView. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π΅Π»Π΅Π³Π°ΡΠ° mapView: viewForAnnotation:.
ΠΠ°ΠΆΠ΄Π°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ MKMapView, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ Π²ΠΈΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Π’Π°ΠΊΠΈΠ΅ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΠ΅ Π²ΠΈΠ΄Ρ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π°Π½Π½ΠΎΡΠΈΡΡΡΡΠΈΠΌΠΈ (Annotation Views).
ΠΠ½Π½ΠΎΡΠΈΡΡΡΡΠΈΠΉ Π²ΠΈΠ΄ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° MKAnnotationView, ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΎΡ UIView. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π΅Π»Π΅Π³Π°ΡΠ° ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π΅Π»Π΅Π³Π°ΡΠ° mapView: viewForAnnotation:, ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π΅Π»Π΅Π³Π°ΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ° MKAnnotationView, ΡΡΠΎΠ±Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ (Π° ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ β Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ) Π°Π½Π½ΠΎΡΠΈΡΡΡΡΠΈΠ΅ Π²ΠΈΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
Π§ΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π² Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ²Π΅ΡΠ° ΠΌΠ΅ΡΠΎΠΊ (ΡΠ²Π΅Ρ Π±ΡΠ΄Π΅ΠΌ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΏΠ°Π»ΠΈΡΡΡ, ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠΊ Π² SDK), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π²ΡΡΡΡ Π½Π° ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ, Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ Π΄Π΅Π»Π΅Π³Π°ΡΠ° mapView: viewForAnnotation: Π½Π΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° MKAnnotationView, Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° MKPinAnnotationView. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ ΠΊΠ»Π°ΡΡ MKPinAnnotationView ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ MKAnnotationView.
β (MKAnnotationView *)mapView:(MKMapView *)mapView
viewForAnnotation:(id <MKAnnotation>)annotation{
MKAnnotationView *result = nil;
if ([annotation isKindOfClass: [MyAnnotation class]] == NO){
return result;
}
if ([mapView isEqual: self.myMapView] == NO){
/* ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ Map View,
ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅. */
return result;
}
/* Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΈΠΏ ΡΠΎΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎΡ Map View
Π·Π°ΠΏΡΡΡΠΈΠ» Π΄Π°Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π΅Π»Π΅Π³Π°ΡΠ°. */
MyAnnotation *senderAnnotation = (MyAnnotation *)annotation;
/* Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ
ΠΊΠ»Π°ΡΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ, ΠΌΡ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°Π·ΠΎΠ²ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ
Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΉΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π΅ΠΌ. */
NSString *pinReusableIdentifier =
[MyAnnotation
reusableIdentifierforPinColor: senderAnnotation.pinColor];
/* ΠΠΎΠ»ΡΠ·ΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΡΠ°Π½Π΅Π΅, ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ
ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ°ΡΠΊΠ΅Ρ Π² ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΌ Map View. */
MKPinAnnotationView *annotationView = (MKPinAnnotationView *)
[mapView
dequeueReusableAnnotationViewWithIdentifier: pinReusableIdentifier];
if (annotationView == nil){
/* ΠΡΠ»ΠΈ Π½Π°ΠΌ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅ΡΡΠΈΠΉΡΡ ΠΌΠ°ΡΠΊΠ΅Ρ,
ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ. */
annotationView = [[MKPinAnnotationView alloc]
initWithAnnotation: senderAnnotation
reuseIdentifier: pinReusableIdentifier];
/* Π£Π±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, ΡΡΠΎ Π²ΠΈΠ΄Π½Ρ Π²ΡΠ½ΠΎΡΠΊΠΈ ΠΏΠΎΠ²Π΅ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π² ΡΠ»ΡΡΠ°Π΅,