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

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

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

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ NSLog ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π½Π΅Π΅ ΠΊΠΎΠ΄Π° выводят Π² ΠΎΠΊΠ½Π΅ консоли адрСс, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ гСокодирования:


Country = United States

Postal Code = 95472

Locality = Sebastopol

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ имССтся Π»ΠΈΠΌΠΈΡ‚ объСма запросов Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π³Π΅ΠΎΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π·Π° ΠΎΠ΄ΠΈΠ½ дСнь. Π­Ρ‚ΠΎΡ‚ объСм опрСдСляСтся ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠΌ сСрвСрного прилоТСния, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… слуТб Π² iOS. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ ΠΎΠ½Π»Π°ΠΉΠ½ΠΎΠ²Ρ‹Π΅ сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ сторонниС API. Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ сСйчас Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… сСрвисов, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сами ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, Ссли Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ ограничСния, связанныС с ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Π³Π΅ΠΎΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ пространствСнных ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² настоящСС врСмя Π² iOS SDK. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π³Π΅ΠΎΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса CLGeocoder. Π­Ρ‚ΠΎΡ‚ класс Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ сСтСвого соСдинСния β€” ΠΎΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов. ЗначСния, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π³Π΅ΠΎΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ Π±Π»ΠΎΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСдаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ reverseGeocodeLocation: completionHandler:.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π Π°Π·Π΄Π΅Π» 9.7.

9.9. Поиск Π² картографичСском Π²ΠΈΠ΄Π΅

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ВрСбуСтся ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ картографичСский Π²ΠΈΠ΄, ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ всС рСстораны ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Π½Π°ΠΆΠ΅Ρ€Π½Ρ‹Π΅ Π·Π°Π»Ρ‹ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Ρ€Π΅Π³ΠΈΠΎΠ½Π΅, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠΌ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ находится Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ Π³ΠΎΡ€ΠΎΠ΄Π° ΠΈ Π²ΠΈΠ΄ΠΈΡ‚ своС мСстополоТСниС Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ просто ввСсти Π² строку поиска слово «рСстораны» β€” ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ поиск ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ запросу.

РСшСниС

ΠšΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹, Π±Π΅Π· прСувСличСния, просто Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½Ρ‹. Но ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΈΠ΄ΠΈΡ‚ Π½Π° экранС просто ΠΎΠ΄Π½Ρƒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²ΠΏΠΎΠ»Π½Π΅ сгодится ΠΈ обычная бумаТная ΠΊΠ°Ρ€Ρ‚Π°. ΠšΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ возмоТности смартфонов интСрСсны ΠΈΠΌΠ΅Π½Π½ΠΎ Π² контСкстС ΠΈΡ… интСрактивности. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ мСста, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² мСсто, располоТСнноС ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌΡƒ адрСсу. Apple Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»Π° Π² iOS SDK Ρ‚Ρ€ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… класса, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈΡΠΊΠ°Ρ‚ΡŒ мСста Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅. Π’Π°ΠΊΠΎΠΉ поиск ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ прост. ΠžΡ‚ вас трСбуСтся всСго лишь ввСсти тСкстовый запрос ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ вас интСрСсуСт, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ «рСстораны» ΠΈΠ»ΠΈ Β«ΠΊΠ°Ρ„Π΅, β€” ΠΈ SDK Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π·Π° вас ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ собираСмся ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π²ΠΈΠ΄Π° картографичСский Π²ΠΈΠ΄ (с мСстополоТСниСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ мСстополоТСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ находится, всСгда Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ картографичСский Π²ΠΈΠ΄ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ мСстополоТСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (прСдполагаСтся, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΌ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ), ΠΌΡ‹ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ класс MKLocalSearch ΠΈ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ всС рСстораны, находящиСся поблизости ΠΎΡ‚ Π½Π΅Π³ΠΎ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ картографичСский Π²ΠΈΠ΄, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:


#import Β«ViewController.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.myMapView.showsUserLocation = YES;

self.myMapView.userTrackingMode = MKUserTrackingModeFollow;


/* Π”обавляСм Π΅Π΅ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ */

[self.view addSubview: self.myMapView];}


ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ свойство showsUserLocation картографичСского Π²ΠΈΠ΄Π°. Π­Ρ‚ΠΎ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если ΠΎΠ½ΠΎ Ρ€Π°Π²Π½ΠΎ YES, Ρ‚ΠΎ картографичСский Π²ΠΈΠ΄ ΠΈΡ‰Π΅Ρ‚ мСстополоТСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρƒ нас Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° это). ВсС это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ картографичСский Π²ΠΈΠ΄ дСйствуСт Ρ‚Π°ΠΊ: ΠΎΠ½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ мСсто Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ для Π½Π΅Π³ΠΎ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ, Π½ΠΎ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎ мСсто, Π³Π΄Π΅ располагаСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. Π˜Π½Ρ‹ΠΌΠΈ словами, Ссли Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² картографичСском Π²ΠΈΠ΄Π΅ отобраТаСтся ΠΊΠ°Ρ€Ρ‚Π° Π’Π΅Π»ΠΈΠΊΠΎΠ±Ρ€ΠΈΡ‚Π°Π½ΠΈΠΈ, Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ находится Π³Π΄Π΅-Ρ‚ΠΎ Π² Нью-Π™ΠΎΡ€ΠΊΠ΅, Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° экранС своСго устройства ΠΊΠ°Ρ€Ρ‚Ρƒ Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠ³ΠΎ королСвства. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ этот нСдостаток, Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ для свойства userTrackingMode картографичСского Π²ΠΈΠ΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ MKUserTrackingModeFollow, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ†Π΅Π½Ρ‚Ρ€ картографичСского Π²ΠΈΠ΄Π° всСгда соотвСтствуСт ΠΌΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρ‹ коррСктируСтся Π² соотвСтствии с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π»ΠΈ картографичСскому Π²ΠΈΠ΄Ρƒ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ мСстополоТСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ² картографичСского Π²ΠΈΠ΄Π°:

β€’ mapView: didFailToLocateUserWithError: β€” вызываСтся Π² Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° картографичСскому Π²ΠΈΠ΄Ρƒ Π½Π΅ удаСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мСстополоТСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ мСстополоТСниС Π½Π΅ получаСтся;

β€’ mapView: didUpdateUserLocation: β€” вызываСтся Π² Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅ картографичСского Π²ΠΈΠ΄Π° всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° информация ΠΎ мСстополоТСнии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ обновляСтся. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ всСгда соотвСтствуСт ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌΡƒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ развития бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ поиска.

Π‘Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ mapView: didFailToLocateUserWithError::


β€” (void) mapView:(MKMapView *)mapView

didFailToLocateUserWithError:(NSError *)error{

UIAlertView *alertView = [[UIAlertView alloc]

initWithTitle:@"Failed"

message:@"Could not get the user's location"

delegate: nil cancelButtonTitle:@"OK"

otherButtonTitles: nil];

[alertView show];

}


Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½ΠΎ. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ mapView: didUpdateUserLocation::


β€” (void) mapView:(MKMapView *)mapView

didUpdateUserLocation:(MKUserLocation *)userLocation{


MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];

request.naturalLanguageQuery = @"restaurants";


MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.01);


request.region =

MKCoordinateRegionMake(userLocation.location.coordinate, span);


MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest: request];


[search startWithCompletionHandler:

^(MKLocalSearchResponse *response, NSError *error) {


for (MKMapItem *item in response.mapItems){

NSLog(@"Item name = %@", item.name);

NSLog(@"Item phone number = %@", item.phoneNumber);

NSLog(@"Item url = %@", item.url);

NSLog(@"Item location = %@", item.placemark.location);


}


}];


}


Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ всС просто. ΠœΡ‹ создаСм Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ поисковый запрос ΠΈ устанавливаСм Π² качСствС значСния Π΅Π³ΠΎ свойства naturalLanguageQuery Ρ‚Π΅ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅, β€” Π² Π΄Π°Π½Π½ΠΎΠΌ случаС рСстораны. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ мСстополоТСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ создаСм Π½Π° Π΅Π³ΠΎ основС Ρ€Π΅Π³ΠΈΠΎΠ½ Ρ‚ΠΈΠΏΠ° MKCoordinateRegion. ΠœΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ это ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск Π² этой области. ΠžΠ±Π»Π°ΡΡ‚ΡŒ сообщаСт Π΄Π²ΠΈΠΆΠΊΡƒ поиска мСстополоТСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΊΡ€ΡƒΠ³ поиска Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠΌ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π³ΠΈΠΎΠ½ создан, Π·Π°Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ Π² качСствС значСния свойства region для локального поиска. Π‘Π΄Π΅Π»Π°Π² это, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ поиску. Для этого ΠΌΡ‹ отправляСм Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ поисковый запрос ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ экзСмпляра startWithCompletionHandler:, относящСмуся ΠΊ классу MKLocalSearch. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π±Π»ΠΎΠΊ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Π”Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° вызываСтся ΠΏΡ€ΠΈ поступлСнии Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска ΠΈΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки.

НайдСнныС элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ записаны Π² свойствС mapItems ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° нашСго Π±Π»ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, эти картографичСскиС элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ MKMapItem. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π±ΡƒΠ΄ΡƒΡ‚ свойства β€” Π² частности, name, phoneNumber ΠΈ url β€” ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ нанСсти Π½Π° ΠΊΠ°Ρ€Ρ‚Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ нас Ρ‚ΠΎΡ‡ΠΊΠΈ. ΠŸΡ€ΠΈ этом ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠΈ, ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π½Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅, β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 9.4.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π Π°Π·Π΄Π΅Π»Ρ‹ 9.4–9.6.

9.10. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

НСобходимо ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ направлСния, подсказывая Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ ΠΈΠ· Ρ‚ΠΎΡ‡ΠΊΠΈ А Π² Ρ‚ΠΎΡ‡ΠΊΡƒ B.

РСшСниС

Π˜Π½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° MKDirections ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра calculateDirectionsWithCompletionHandler:, относящийся ΠΊ этому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Π’Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, Π° Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° MKDirectionsResponse. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠΎΠΌ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ направлСниях, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½Π° устройствС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Maps (ΠšΠ°Ρ€Ρ‚Ρ‹). Π­Ρ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ вскорС научимся.