Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 91

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

}


β€” (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];


/* Π£Π±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄Π½Ρ‹ выноски ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° Π² случаС,