如何在新的苹果地图上获取iOS 6的指示



我已经为iOS&lt构建了一个应用程序;6,在所有功能之前,所有功能都可以完美地工作。现在,我使用了一个开关,该开关识别设备上安装的iOS,然后我的应用程序打开正确的地图,以获取从本地位置到另一个位置的说明(地图上的一些引脚)。问题在于,在iOS 6之前,该应用程序打开本机地图并将路由显示给用户。现在,如果设备使用iOS 6,则该应用程序将打开Apple Maps,但显示了一个弹出窗口,其中诸如"无法在这两个位置之间取得方向"之类的内容。为什么?有人可以帮助我解决这个问题吗?

在这里如何将坐标传递给披露按钮的地图:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
    [self.navigationController pushViewController:[[UIViewController alloc] init] animated:YES];
    if (SYSTEM_VERSION_LESS_THAN(@"6.0")) {
         NSString* addr = [NSString stringWithFormat:@"http://maps.google.com/maps?daddr=%1.6f,%1.6f&saddr=Posizione attuale", view.annotation.coordinate.latitude,view.annotation.coordinate.longitude];
         NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
         [[UIApplication sharedApplication] openURL:url];
    }
    else {
        NSString* addr = [NSString stringWithFormat:@"http://maps.apple.com/maps?daddr=%1.6f,%1.6f&saddr=Posizione attuale", view.annotation.coordinate.latitude,view.annotation.coordinate.longitude];
        NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        [[UIApplication sharedApplication] openURL:url];

    }

虽然您可以将URL方法用于地图(http://maps.apple.com/...),但在呈现特定位置时,我发现它并不好。最好的选择是在iOS 6及以上使用MAPKIT对象。

示例:

CLLocationCoordinate2D location;
location.latitude = ...;
location.longtitude = ...;
MKPlacemark* placemark = [[MKPlacemark alloc] initWithCoordinate:location addressDictionary:nil];
MKMapItem* item = [[MKMapItem alloc] initWithPlacemark:placemark];
//... Any Item customizations
NSDictionary* mapLaunchOptions = ...;
[item openInMapsWithLaunchOptions:mapLaunchOptions];

这将直接打开Apple地图,并使用您提供的物品。

为了处理指示,请使用MKLaunchOptionsDirectionsModeKey启动选项,并通过以下方式提供开始和结束的地图项目:

[MKMapItem openMapsWithItems:mapItems launchOptions:launchOptions];

只是为了澄清其他答案,提供指示时有两个选择:驾驶或行走。这是每一个做的方法:

MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:CLLocationCoordinate2DMake(coordinate.latitude,coordinate.longitude) addressDictionary:nil];
MKMapItem *destination = [[MKMapItem alloc] initWithPlacemark:placemark];
//This is for driving
[MKMapItem openMapsWithItems:@[destination] launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving}];
//This is for walking
[MKMapItem openMapsWithItems:@[destination] launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeWalking}];

苹果文档的更多信息。

相关内容

  • 没有找到相关文章

最新更新