1
我想問一個用戶他想使用哪個GPS應用程序以將其帶到特定位置。 我想我必須先檢查哪些GPS應用程序已安裝...我該怎麼做? 當用戶選擇特定的應用程序,我如何激活它,並告訴它路由到特定的目的地?如何在iPhone中使用已安裝的GPS系統
我想問一個用戶他想使用哪個GPS應用程序以將其帶到特定位置。 我想我必須先檢查哪些GPS應用程序已安裝...我該怎麼做? 當用戶選擇特定的應用程序,我如何激活它,並告訴它路由到特定的目的地?如何在iPhone中使用已安裝的GPS系統
它缺乏資源,但它是可行的...複製&我的舊源代碼粘貼...只需用Tip
替換別的東西。這是簡單的類,其中包含locLatitude
和locLongitude
值與一些更多的細節。 TomTom不受支持,因爲我無法找到它的URL方案。由於我不再需要它,我沒有試圖再次搜索它。
typedef enum {
ExternalNavigationAppGoogleMaps,
ExternalNavigationAppNavigon,
ExternalNavigationAppTomTom
} ExternalNavigationApp;
+ (BOOL)isSupported:(ExternalNavigationApp)navigationApp;
+ (BOOL)navigateTo:(Tip *)tip viaApp:(ExternalNavigationApp)navigationApp;
+ (BOOL)navigateTo:(Tip *)tip from:(CLLocationCoordinate2D)from viaApp:(ExternalNavigationApp)navigationApp;
...實現部分...
+ (NSString *)googleMapsUrl:(Tip *)tip from:(CLLocationCoordinate2D)from {
NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f",
from.latitude, from.longitude,
[tip.locLatitude floatValue], [tip.locLongitude floatValue]];
return urlString;
}
+ (NSString *)navigonAppUrl:(Tip *)tip {
NSString *urlString = [NSString stringWithFormat:@"navigon://%@|%@||||||%f|%f",
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"],
tip.name,
[tip.locLongitude floatValue],
[tip.locLatitude floatValue]];
return urlString;
}
+ (NSString *)tomtomAppUrl:(Tip *)tip {
return nil;
}
+ (NSURL *)urlForApp:(ExternalNavigationApp)navigationApp withTip:(Tip *)tip from:(CLLocationCoordinate2D)from {
NSString *urlString = nil;
if (ExternalNavigationAppNavigon == navigationApp) {
urlString = [self navigonAppUrl:tip];
} else if (ExternalNavigationAppTomTom == navigationApp) {
urlString = [self tomtomAppUrl:tip];
} else if (ExternalNavigationAppGoogleMaps == navigationApp) {
urlString = [self googleMapsUrl:tip from:from];
}
if (urlString == nil)
return nil;
return [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
}
+ (BOOL)isSupported:(ExternalNavigationApp)navigationApp {
CLLocationCoordinate2D coord;
NSURL *url = [self urlForApp:navigationApp withTip:nil from:coord];
if (url == nil)
return NO;
return [[UIApplication sharedApplication]canOpenURL:url];
}
+ (BOOL)navigateTo:(Tip *)tip viaApp:(ExternalNavigationApp)navigationApp {
CLLocationCoordinate2D coord;
NSURL *url = [self urlForApp:navigationApp withTip:tip from:coord];
if (url == nil)
return NO;
return [[UIApplication sharedApplication] openURL:url];
}
+ (BOOL)navigateTo:(Tip *)tip from:(CLLocationCoordinate2D)from viaApp:(ExternalNavigationApp)navigationApp {
NSURL *url = [self urlForApp:navigationApp withTip:tip from:from];
if (url == nil)
return NO;
return [[UIApplication sharedApplication] openURL:url];
}
是男人!而已。謝謝。完美的作品。還有一個你可以使用的應用程序:Waze。它的網址是「waze://?q = address」,其中address是一個真實地址。 – Misha 2011-03-01 21:38:22