地址簿和地图套件

时间:2009-08-05 11:12:27

标签: ios mkmapview mapkit abaddressbook addressbookui

我正在为iPhone iOS 3.0编写一个应用程序,我想在一起使用Map Kit和Address Book。我有一个地点(例如餐馆)的数据库,包括姓名,位置,电话,地址和其他一些数据。我在表格视图中列出它们,当我选择某个地方时,我想显示地址簿联系人(在ABUnknownPersonViewController的帮助下),其中包含所有信息,因此用户可以轻松地将此联系人添加到地址簿中。

现在,当我点击地址时,应用会将我切换到地图应用。如何捕获此事件以在我的MKMapView(在我的应用内部)中显示?

还有一个相关的问题。有没有办法在地图应用程序中实现标准地址簿控制器中的“从此处的方向”,“此处的方向”按钮?

2 个答案:

答案 0 :(得分:0)

对于相关问题,从这里到此处的方向,您可以使用URL http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f替换%f的开头地址的纬度和经度(saddr)和您喜欢的目的地址(daddr) 。您可以从用户位置的纬度和经度中获取“此处”。此链接将在默认的地图应用程序中打开,但会显示路线。 HTH

答案 1 :(得分:0)

拦截ABUnknownPersonViewController委托方法中的默认操作,以防止切换到地图应用:

// 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;
}