Адресная книга и набор карт

Я пишу приложение для iPhone iOS 3.0, в котором хочу использовать вместе Map Kit и адресную книгу. У меня есть база данных мест (например, ресторанов) с названием, местонахождением, телефоном, адресом и некоторыми другими данными. Я перечисляю их в виде таблицы, и когда я выбираю какое-то место, я хочу показать контакт адресной книги (с помощью ABUnknownPersonViewController), содержащий всю информацию, чтобы пользователю было легко добавить этот контакт в адресную книгу.

Теперь, когда я нажимаю на адрес, приложение переключает меня на приложение «Карты». Как я могу поймать это событие, чтобы показать его в моем MKMapView (внутри моего приложения)?

Еще один связанный с этим вопрос. Есть ли способ реализовать кнопки «Направление отсюда», «Направление сюда» в стандартном контроллере адресной книги, как в приложении «Карты»?


person azia    schedule 05.08.2009    source источник
comment
Вы нашли ответ на свой вопрос? У меня такая же потребность в дизайне.   -  person amok    schedule 17.11.2010


Ответы (2)


Для соответствующего вопроса, направление отсюда и сюда, вы можете использовать URL http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f, где вы заменяете% f на широту и долготу начального адреса (saddr) и адрес назначения (daddr) по вашему вкусу. Вы можете получить «здесь» по широте и долготе местоположения пользователя. Эта ссылка откроется в приложении «Карты» по умолчанию, но покажет маршруты. HTH

person drvdijk    schedule 05.08.2009
comment
Спасибо за ответ, но я спрашиваю о кнопках (строках) в стандартном контроллере адресной книги (например, ABUnknownPersonViewController). Как и в приложении «Карты» (как отображается адрес после нажатия кнопки «Просмотр аксессуаров»). - person azia; 05.08.2009

Перехватите действие по умолчанию в методе делегата ABUnknownPersonViewController, чтобы предотвратить переключение на приложение Maps:

// ABUnknownPersonViewControllerDelegate protocol conformance
- (BOOL)unknownPersonViewController:(ABUnknownPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
    // Allow the default action to occur.
    BOOL shouldPerformDefaultAction = YES;

    // If address property was selected, do not switch to the Maps.app.
    if (property == kABPersonAddressProperty)
    {
        [self.navigationController popViewControllerAnimated:YES];

        // Do not perform the default action    
        shouldPerformDefaultAction = NO;

        // Show your MKMapView here
        // ....
    }

    return shouldPerformDefaultAction;
}
person Marco    schedule 06.01.2012