在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实现,如果没有,如何实现检查是否安装了应用程序等。
答案 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。