我正在编写一个应用程序,其中包含各种场所的信息。我想为用户提供从Apple Maps应用程序打开位置信息屏幕的功能。我知道如何让应用程序使用以下代码打开MKMapItem:
- (void) showMoreInfoFor:(MKPlacemark*) destination {
MKLocalSearchRequest* searchRequest = [[MKLocalSearchRequest alloc] init];
searchRequest.naturalLanguageQuery = self.venue.name;
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(destination.coordinate, 50.0f, 50.0f);
searchRequest.region = region;
MKLocalSearch* search = [[MKLocalSearch alloc] initWithRequest:searchRequest];
[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
if ([response.mapItems count] > 0) {
[[response.mapItems objectAtIndex:0] openInMapsWithLaunchOptions:nil];
}
}];
}
(我也试过跳过本地搜索,只是直接用destination
地标创建一个新的MKMapItem,结果完全相同。)
但是,这会将用户带到如下屏幕:
我希望用户直接进入以下屏幕,而不是要求用户点击地方标记上的披露指示符。
我也尝试使用Apple地图链接(根据Apple URL Scheme Reference for Map Links),如下所示:
NSString* url = [NSString stringWithFormat:@"http://maps.apple.com/?sll=%f,%f&q=%@", destination.coordinate.latitude, destination.coordinate.longitude, [self.venue.name stringByReplacingOccurrencesOfString:@" " withString:@"+"]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
但这会将用户带到类似于上面第一个的屏幕,除了在许多情况下它显示的引脚远不及URL中指定的纬度/经度(例如,在完全不同的城市中)。它也没有深入到位置信息屏幕。
是否可以从iOS应用程序导航到Apple Maps应用程序,直接进入商家/位置信息屏幕,如上面的第二个屏幕截图所示?