iOS支持第三方导航

时间:2015-10-03 12:35:02

标签: ios objective-c iphone mapkit

在iOS 8中(也许我也记不起来)你可以设置导航的默认应用程序。我目前正在实施一个按钮,允许用户打开Apple Maps并按以下方式获取到某个位置的路线:

- (IBAction)getDirections:(id)sender {

CLLocationCoordinate2D endingCoord = storeLocation;
MKPlacemark *endLocation = [[MKPlacemark alloc] initWithCoordinate:endingCoord addressDictionary:nil];
MKMapItem *endingItem = [[MKMapItem alloc] initWithPlacemark:endLocation];
endingItem.name = @"Cubes Pizza Sunway";

NSMutableDictionary *launchOptions = [[NSMutableDictionary alloc] init];
[launchOptions setObject:MKLaunchOptionsDirectionsModeDriving forKey:MKLaunchOptionsDirectionsModeKey];

[endingItem openInMapsWithLaunchOptions:launchOptions];

}

这很有效,并启动了我的期望。但是,如果用户安装了Google地图,该怎么办? Apple会自动为用户提供选项吗?或者我是否需要实现活动表并检测所有导航应用程序,然后找出每个应用程序的URL模式?)

我将如何实施这样的事情?

这是同一个问题:iOS - run 3rd party navigation app from code但它已经一岁了,想知道这个功能是否由APPLE实现,如果没有,如何实现检查是否安装了应用程序等。

1 个答案:

答案 0 :(得分:1)

您可以使用

Google Maps has a URL scheme启动该应用。 Here is how you request directions。如其页面所述,您可以通过以下方式检查Google地图应用是否已安装:

... var skewX = this.skewX; var skewY = this.skewY; imgNew.onload = function(){ ctx.save(); ctx.transform(1, skewX/100, skewY/100, 1, 0, 0); ctx.drawImage(imgNew, locx, locy, width, height); ctx.restore(); }

您还需要将UIApplication.sharedApplication().canOpenURL(NSURL(string: "comgooglemaps://")!)添加到Info.plist中的comgooglemaps字典,以便能够在iOS 9上使用LSApplicationQueriesSchemes方法,如{{3 }}

我相信您正在考虑的“默认导航应用”实际上是this blog post