Решение
Решение
Получение обычного адреса на основании известных пространственных координат (x и y) называется обратным геокодированием. Для выполнения такой операции нужно создать и использовать экземпляр класса CLGeocoder, а также предоставить блоковый объект завершения. При этом необходимо гарантировать, что блоковый объект не имеет возвращаемого значения и принимает два параметра:
• массив меток (типа NSArray). Метками будут обозначены те точки на карте, которые соответствуют критериям поискового запроса;
• ошибку (типа NSError), которая будет преобразована в код ошибки, если обратное геокодирование не удастся.
Инстанцировав объект типа CLGeocoder, мы используем его метод reverseGeocodeLocation: completionHandler: для выполнения обратного геокодирования.
Верхняя часть. m-файла простого контроллера вида, применяемого для этой цели, определяется следующим образом:
#import «ViewController.h»
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()
@property (nonatomic, strong) CLGeocoder *myGeocoder;
@end
@implementation ViewController
В ходе загрузки вида можно выполнить обратное геокодирование:
— (void)viewDidLoad{
[super viewDidLoad];
CLLocation *location = [[CLLocation alloc]
initWithLatitude:+38.41 12810
longitude:-122.8409780f];
self.myGeocoder = [[CLGeocoder alloc] init];
[self.myGeocoder
reverseGeocodeLocation: location
completionHandler: ^(NSArray *placemarks, NSError *error) {
if (error == nil && placemarks.count > 0){
CLPlacemark *placemark = placemarks[0];
/* Результаты получены. */
NSLog(@"Country = %@", placemark.country);
NSLog(@"Postal Code = %@", placemark.postalCode);
NSLog(@"Locality = %@", placemark.locality);
}
else if (error == nil &&
[placemarks count] == 0){
NSLog(@"No results were returned.");
}
else if (error!= nil){
NSLog(@"An error occurred = %@", error);
}
}];
}
— (void)viewDidUnload{
[super viewDidUnload];
self.myGeocoder = nil;
}
Если операция завершится успешно, то в массиве placemarks будут содержаться объекты типа CLPlacemark. Эти объекты будут отмечать адреса, удовлетворяющие значениям широты и долготы, которые мы сообщили методу reverseGeocodeLocation: completionHandler:. Итак, все, что от нас требуется, — убедиться в отсутствии ошибок и в том, что в массиве меток есть как минимум одна метка.
Методы NSLog из приведенного ранее кода выводят в окне консоли адрес, прошедший процедуру обратного геокодирования:
Country = United States
Postal Code = 95472
Locality = Sebastopol
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Решение
Решение Воспользуйтесь методом dataWithJSONObject: options: error: класса
Решение
Решение Воспользуйтесь методом JSONObjectWithData: options: error: класса
Решение
Решение Внедрите в ваше приложение фреймворк Social и воспользуйтесь классом SLComposeViewController для обеспечения социального обмена сообщениями, например
Решение
Решение Воспользуйтесь классом NSXMLParser.
Решение
Решение Используйте метод экземпляра URLsForDirectory: inDomains:, относящийся к классу
Решение
Решение Все классы Cocoa, обеспечивающие сохранение информации, например NSString, UIImage и NSData, предоставляют методы экземпляра, позволяющие сохранять данные на диске по заданному
Решение
Решение Пользуйтесь методом экземпляра createDirectoryAtPath: withIntermediateDirectories: attributes: error:, относящимся к классу NSFileManager, как показано далее:— (BOOL) application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions{NSFileManager *fileManager = [[NSFileManager alloc] init];NSString *tempDir = NSTemporaryDirectory();NSString *imagesDir = [tempDir
Решение
Решение Используйте метод экземпляра contentsOfDirectoryAtPath: error:, относящийся к классу NSFileManager, как показано далее. В данном примере мы перечисляем все файлы, каталоги и символьные ссылки, расположенные в каталоге пакета с
Решение
Решение Используйте один из двух методов экземпляра, removeItemAtPath: error: или removeItemAtURL: error:, относящихся к классу NSFileManager. Первый метод принимает путь как строку, а второй — как
Решение
Решение Убедитесь, что ваш класс соответствует протоколу NSCoding, и реализуйте все необходимые методы данного протокола. Не волнуйтесь, я все подробно объясню в подразделе «Обсуждение» данного
Решение
Решение Применяйте метод класса isSourceTypeAvailable:, относящийся к классу UIImagePickerController, со значением UIImagePickerControllerSourceTypeCamera следующим образом:— (BOOL) isCameraAvailable{return [UIImagePickerController
Решение
Решение Инстанцируйте объект типа UIImagePickerController и представьте его пользователю как модальный вид в актуальном контроллере вида. Вот объявление этого контроллера
Решение
Решение Воспользуйтесь объектом UIImagePickerController с источником типа UIImagePickerControllerSourceTypeCamera и медийной информацией типа kUTTypeMovie:— (void)viewDidAppear:(BOOL)animated{[super viewDidAppear: animated];static BOOL beenHereBefore = NO;if (beenHereBefore){/* Отображаем элемент для выбора даты только после того, как вызываетсяметод
Решение
Решение Воспользуйтесь процедурой UIImageWriteToSavedPhotosAlbum:— (void) imageWasSavedSuccessfully:(UIImage *)paramImagedidFinishSavingWithError:(NSError *)paramErrorcontextInfo:(void *)paramContextInfo{if (paramError == nil){NSLog(@"Image was saved successfully.");} else {NSLog(@"An error happened while saving the
Решение
Решение Следует обеспечить обработку ошибок соединения в блоковых объектах, передаваемых вашим объектам
Решение
Решение Добавьте в главный файл. plist приложения ключ UIApplicationExitsOnSuspend и задайте ему значение true:<# Некоторые ключи и значения #><key>UIApplicationExitsOnSuspend</key><true/><# Остальные ключи и