/* Π£Π±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, ΡΡΠΎ Π²ΠΈΠ΄Π½Ρ Π²ΡΠ½ΠΎΡΠΊΠΈ ΠΏΠΎΠ²Π΅ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π² ΡΠ»ΡΡΠ°Π΅,
Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΌΠ°ΡΠΊΠ΅ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ. */
[annotationView setCanShowCallout: YES];
}
/* Π’Π΅ΠΏΠ΅ΡΡ (Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΌΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°Π·ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΠΊΠ΅Ρ
ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π½ΠΎΠ²ΡΠΉ) ΡΠ±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, ΡΡΠΎ ΡΠ²Π΅Ρ ΠΌΠ°ΡΠΊΠ΅ΡΠ° ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ²Π΅ΡΠΎΠΌ
Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. */
annotationView.pinColor = senderAnnotation.pinColor;
result = annotationView;
return result;
}
ΠΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π½Π½ΠΎΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π° Π΅ΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ (ΡΡΡΠΎΠΊΠ° NSString). ΠΠΏΡΠ΅Π΄Π΅Π»ΡΡ, ΠΌΠ°ΡΠΊΠ΅Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π½Π° ΠΊΠ°ΡΡΠ΅, ΠΈ Π·Π°Π΄Π°Π²Π°Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄Π»Ρ ΠΌΠ°ΡΠΊΠ΅ΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΏΡ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊΡΠ°ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΡ, Π° ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ β ΡΠΈΠ½ΠΈΠ΅), ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΠΊΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° dequeueReusableAnnotationViewWithIdentifier:, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ MKMapView. ΠΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.
ΠΡ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ MyAnnotation. ΠΠΎΡ. h-ΡΠ°ΠΉΠ» ΠΊΠ»Π°ΡΡΠ° MyAnnotation:
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
/* ΠΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ²Π΅ΡΠ° ΠΌΠ΅ΡΠΎΠΊ, ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π² SDK. ΠΡ Π·Π°Π΄Π°Π΅ΠΌ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π΅Π³ΠΎ ΡΠ²Π΅ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ
ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ½ΠΎΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΡΠ°Π½Π΅Π΅ ΠΌΠ°ΡΠΊΠ΅ΡΡ Π² ΡΠ²ΡΠ·ΠΈ
Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ²Π΅ΡΠΎΠΌ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈΡΡ. */
extern NSString *const kReusablePinRed;
extern NSString *const kReusablePinGreen;
extern NSString *const kReusablePinPurple;
@interface MyAnnotation: NSObject <MKAnnotation>
/* unsafe_unretained, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠΎΡ ΡΠ°Π³ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ
ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ. weak ΠΈΠ»ΠΈ strong
Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ. */
@property (nonatomic, unsafe_unretained, readonly)
CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
/* unsafe_unretained ΠΏΠΎ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΈΡΠΈΠ½Π΅, ΡΡΠΎ ΠΈ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° coordinate */
@property (nonatomic, unsafe_unretained) MKPinAnnotationColor pinColor;
β (instancetype)initWithCoordinates:(CLLocationCoordinate2D)paramCoordinates
title:(NSString*)paramTitle
subTitle:(NSString*)paramSubTitle;
+ (NSString *) reusableIdentifierforPinColor
:(MKPinAnnotationColor)paramColor;
@end
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ Π°Π½Π½ΠΎΡΠΈΡΡΡΡΠΈΠΉ Π²ΠΈΠ΄. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ β ΡΡΠΎ ΠΌΠ΅ΡΡΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π½Π° ΠΊΠ°ΡΡΠ΅, Π° Π°Π½Π½ΠΎΡΠΈΡΡΡΡΠΈΠΉ Π²ΠΈΠ΄ β ΡΡΠΎ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π²ΡΠΏΠ»ΡΠ²Π°Π΅Ρ Π½Π°Π΄ ΠΊΠ°ΡΡΠΎΠΉ (ΡΠΎ Π΅ΡΡΡ Π²ΠΈΠ΄). ΠΠ»Π°ΡΡ MyAnnotation ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, Π° Π½Π΅ Π°Π½Π½ΠΎΡΠΈΡΡΡΡΠ΅ΠΌΡ Π²ΠΈΠ΄Ρ. ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΏΡΡΠ΅ΠΌ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° MyAnnotation, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΅ΠΉ ΡΠ²Π΅Ρ, Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΌΠΈ ΠΆΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ pinColor. ΠΠΎΠ³Π΄Π° ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π΅Π»Π΅Π³Π°ΡΠ° mapView: viewForAnnotation: ΠΈ Π·Π°ΠΏΡΠΎΡΠΈΡ Ρ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π΅Π³Π°ΡΠ° Π°Π½Π½ΠΎΡΠΈΡΡΡΡΠΈΠΉ Π²ΠΈΠ΄. Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ forAnnotation Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΎΠΎΠ±ΡΠ°Π΅ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ. ΠΠΎΠ»ΡΡΠ°Ρ ΡΡΡΠ»ΠΊΡ Π½Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΠΈΠΏ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ MyAnnotation, ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΅Π΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ pinColor ΠΈ, ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ , ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° MKPinAnnotationView. Π£ ΡΡΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΡΠ²Π΅ΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π²Π΅ΡΠ½Π΅ΠΌ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π²ΠΈΠ΄Ρ.
ΠΠΎΡ. m-ΡΠ°ΠΉΠ» MyAnnotation:
#import Β«MyAnnotation.hΒ»
NSString *const kReusablePinRed = @"Red";
NSString *const kReusablePinGreen = @"Green";
NSString *const kReusablePinPurple = @"Purple";
@implementation MyAnnotation
+ (NSString *) reusableIdentifierforPinColor
:(MKPinAnnotationColor)paramColor{
NSString *result = nil;
switch (paramColor){
case MKPinAnnotationColorRed:{
result = REUSABLE_PIN_RED;
break;
}
case MKPinAnnotationColorGreen:{
result = REUSABLE_PIN_GREEN;
break;
}
case MKPinAnnotationColorPurple:{
result = REUSABLE_PIN_PURPLE;
break;
}
}
return result;
}
β (instancetype)initWithCoordinates:(CLLocationCoordinate2D)paramCoordinates
title:(NSString*)paramTitle
subTitle:(NSString*)paramSubTitle{
self = [super init];
if (self!= nil){
_coordinate = paramCoordinates;
_title = paramTitle;
_subtitle = paramSubTitle;
_pinColor = MKPinAnnotationColorGreen;
}
return self;
}
@end
ΠΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° MyAnnotation, Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ Π²ΠΈΠ΄Π°). ΠΠΎΡ Π²Π΅ΡΡ Π½ΡΡ ΡΠ°ΡΡΡ ΡΠ°ΠΉΠ»Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°:
#import Β«ViewController.hΒ»
#import Β«MyAnnotation.hΒ»
#import <MapKit/MapKit.h>
@interface ViewController () <MKMapViewDelegate>
@property (nonatomic, strong) MKMapView *myMapView;
@end
@implementation ViewControllerΠ Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅. m Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΎΠΉ:
β (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];
/* Π£Π±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, ΡΡΠΎ Π²ΠΈΠ΄Π½Ρ Π²ΡΠ½ΠΎΡΠΊΠΈ ΠΏΠΎΠ²Π΅ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π² ΡΠ»ΡΡΠ°Π΅,
Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΌΠ°ΡΠΊΠ΅ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ. */
[annotationView setCanShowCallout: YES];
}
/* Π’Π΅ΠΏΠ΅ΡΡ (Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΌΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°Π·ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΠΊΠ΅Ρ
ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π½ΠΎΠ²ΡΠΉ) ΡΠ±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, ΡΡΠΎ ΡΠ²Π΅Ρ ΠΌΠ°ΡΠΊΠ΅ΡΠ° ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ²Π΅ΡΠΎΠΌ
Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. */
annotationView.pinColor = senderAnnotation.pinColor;
result = annotationView;
return result;
}
β (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;
location.latitude = 50.8219 16929 07181;
location.longitude = -0.13 81176 71012 87842;
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. */
MyAnnotation *annotation =
[[MyAnnotation alloc] initWithCoordinates: location
title:@"My Title"
subTitle:@"My Sub Title"];
annotation.pinColor = MKPinAnnotationColorPurple;
/* Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π° ΠΊΠ°ΡΡΡ. */
[self.myMapView addAnnotation: annotation];
}
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΡΠΈΡ. 9.3.
Π ΠΈΡ. 9.3. ΠΠ°ΡΠΊΠ΅Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ Π² ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅
9.6. ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² Π² ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ², ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΡ Π² iOS SDK, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΠΊΠ°ΡΡΠ΅ Π² ΡΠ°ΠΊΠΎΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.