地址簿和地图工具包

问题描述:

我正在为iPhone iOS 3.0编写一个应用程序,我想一起使用地图工具包和地址簿。我有一个名称,位置,电话,地址和其他一些数据的地方数据库(例如餐馆)。我列出他们在一个表格视图中,当我选择一个地方,我想显示地址簿联系人(在ABUnknownPersonViewController的帮助下),包含所有信息,因此用户很容易将此联系人添加到地址簿。地址簿和地图工具包

现在,当我点击地址时,该应用将我切换到地图应用。我怎样才能抓住这个事件在我的MKMapView(在我的应用程序内部)显示它?

还有一个相关的问题。有没有一种方法来实现标准地址簿控制器中的“方向从这里”,“方向到这里”按钮,就像在地图应用程序中一样?

+0

你有没有发现你的问题的答案?我有相同的设计需求。 – amok 2010-11-17 02:12:04

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

+0

感谢您的回答,但我询问了标准通讯簿控制器(例如ABUnknownPersonViewController)中的按钮(行)。就像在地图应用程序中一样(它在点击附件视图后显示地址的方式)。 – azia 2009-08-05 13:12:22

拦截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; 
}