Jak mogę uruchomić aplikację Google Maps iPhone z poziomu mojej własnej aplikacji natywnej?
Dokumentacja programisty Apple (link jest martwy teraz) wyjaśnia, że jeśli umieścisz link na stronie internetowej, a następnie klikniesz go podczas korzystania z mobilnego Safari na iPhonie, uruchomi się aplikacja Google Maps, która jest standardowo dostarczana z iPhonem.
Jak mogę uruchomić tę samą aplikację Google Maps z określonym adresem z mojej własnej aplikacji na iPhone ' a (tj. Nie strony internetowej za pośrednictwem mobilnego Safari) w taki sam sposób, jak dotykanie adresu w kontaktach uruchamia mapę?
UWAGA: DZIAŁA TO TYLKO NA SAMYM URZĄDZENIU. NIE W SYMULATORZE.
15 answers
W przypadku systemu iOS 5.1.1 i niższych należy użyć metody openURL
UIApplication
. Wykona normalną reinterpretację magicznego adresu URL iPhone ' a. więc
[someUIApplication openURL:[NSURL URLWithString:@"http://maps.google.com/maps?q=London"]]
Powinien wywołać aplikację Google maps.
[[6]}od iOS 6 będziesz wywoływać własną aplikację Maps firmy Apple. W tym celu skonfiguruj obiektMKMapItem
z lokalizacją, którą chcesz wyświetlić, a następnie wyślij mu wiadomość openInMapsWithLaunchOptions
. Aby rozpocząć w bieżącej lokalizacji, spróbuj:
[[MKMapItem mapItemForCurrentLocation] openInMapsWithLaunchOptions:nil];
Musisz być połączony z MapKit w tym celu (i wyświetli monit o lokalizację dostęp, jak sądzę).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-17 17:12:05
Dokładnie. Kod, którego potrzebujesz, aby to osiągnąć, to coś w tym stylu:
UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=London"]];
Ponieważ zgodnie z dokumentacją , aplikacja jest dostępna tylko w delegacie aplikacji, chyba że wywołasz sharedApplication.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-15 16:37:22
Aby otworzyć Google Maps w określonych współrzędnych, wypróbuj ten kod:
NSString *latlong = @"-56.568545,1.256281";
NSString *url = [NSString stringWithFormat: @"http://maps.google.com/maps?ll=%@",
[latlong stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
Możesz zastąpić łańcuch latlong bieżącą lokalizacją z CoreLocation.
Można również określić poziom powiększenia, używając znacznika ("z"). Wartości to 1-19. Oto przykład:
[[UIApplication sharedApplication] openURL:[Nsurl URLWithString:@ " http://maps.google.com/maps?z=8"]];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-31 13:34:07
Istnieje również aplikacja App Store Google Maps, udokumentowana w https://developers.google.com/maps/documentation/ios/urlscheme
Więc najpierw sprawdź czy jest zainstalowany:
[[UIApplication sharedApplication] canOpenURL:
[NSURL URLWithString:@"comgooglemaps://"]];
I wtedy możesz warunkowo zastąpić http://maps.google.com/maps?q=
przez comgooglemaps://?q=
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-13 14:05:54
Oto odnośnik Apple URL Scheme dla linków do Map: http://developer.apple.com/iphone/library/featuredarticles/iPhoneURLScheme_Reference/Articles/MapLinks.html
Zasady tworzenia poprawnego linku do mapy są następujące:
- domena musi być google.com a subdomena musi być maps lub ditu.
- ścieżka musi być/, / maps, / local lub / m, jeśli zapytanie zawiera site jako klucz i local jako wartość.
- ścieżka nie może być / maps/*.
- wszystkie parametry muszą być obsługiwane. Lista obsługiwanych parametrów znajduje się w tabeli 1**.
- parametr nie może być q = * jeśli wartość jest adresem URL(więc KML nie jest pobierany).
- parametry nie mogą zawierać view = text lub dirflg = r.
* * lista obsługiwanych parametrów znajduje się w linku powyżej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-13 18:27:41
Jeśli używasz ios 10, nie zapomnij dodać schematów zapytań w Info.plist
<key>LSApplicationQueriesSchemes</key>
<array>
<string>comgooglemaps</string>
</array>
Jeśli używasz objective-c
if ([[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"comgooglemaps:"]]) {
NSString *urlString = [NSString stringWithFormat:@"comgooglemaps://?ll=%@,%@",destinationLatitude,destinationLongitude];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
} else {
NSString *string = [NSString stringWithFormat:@"http://maps.google.com/maps?ll=%@,%@",destinationLatitude,destinationLongitude];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:string]];
}
Jeśli używasz swift 2.2
if UIApplication.sharedApplication().canOpenURL(NSURL(string: "comgooglemaps:")!) {
var urlString = "comgooglemaps://?ll=\(destinationLatitude),\(destinationLongitude)"
UIApplication.sharedApplication().openURL(NSURL(string: urlString)!)
}
else {
var string = "http://maps.google.com/maps?ll=\(destinationLatitude),\(destinationLongitude)"
UIApplication.sharedApplication().openURL(NSURL(string: string)!)
}
Jeśli używasz swift 3.0
if UIApplication.shared.canOpenURL(URL(string: "comgooglemaps:")!) {
var urlString = "comgooglemaps://?ll=\(destinationLatitude),\(destinationLongitude)"
UIApplication.shared.openURL(URL(string: urlString)!)
}
else {
var string = "http://maps.google.com/maps?ll=\(destinationLatitude),\(destinationLongitude)"
UIApplication.shared.openURL(URL(string: string)!)
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-29 17:38:18
Dla pytania telefon, testujesz na symulatorze? Działa to tylko na samym urządzeniu.
Ponadto, openURL zwraca bool, którego możesz użyć, aby sprawdzić, czy urządzenie, na którym pracujesz, obsługuje tę funkcjonalność. Na przykład nie można wykonywać połączeń na iPodzie Touch: -)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-10 02:07:41
"g" zmień na " q "
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=London"]]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-30 18:28:58
Jeśli nadal masz problemy, ten film pokazuje, jak dostać "moje mapy" z google, aby pokazać się na iPhonie . możesz wtedy wziąć link i wysłać go każdemu i działa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-21 15:05:20
Aby przejść do mapy Google użyj tego api i wyślij szerokość i długość docelową
NSString* addr = nil;
addr = [NSString stringWithFormat:@"http://maps.google.com/maps?daddr=%1.6f,%1.6f&saddr=Posizione attuale", destinationLat,destinationLong];
NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-07 07:40:09
Po Prostu zadzwoń do tej metody i dodaj schemat URL Google Maps do swojego .plik plist taki sam jak Ta Odpowiedź .
Swift-4 :-
func openMapApp(latitude:String, longitude:String, address:String) {
var myAddress:String = address
//For Apple Maps
let testURL2 = URL.init(string: "http://maps.apple.com/")
//For Google Maps
let testURL = URL.init(string: "comgooglemaps-x-callback://")
//For Google Maps
if UIApplication.shared.canOpenURL(testURL!) {
var direction:String = ""
myAddress = myAddress.replacingOccurrences(of: " ", with: "+")
direction = String(format: "comgooglemaps-x-callback://?daddr=%@,%@&x-success=sourceapp://?resume=true&x-source=AirApp", latitude, longitude)
let directionsURL = URL.init(string: direction)
if #available(iOS 10, *) {
UIApplication.shared.open(directionsURL!)
} else {
UIApplication.shared.openURL(directionsURL!)
}
}
//For Apple Maps
else if UIApplication.shared.canOpenURL(testURL2!) {
var direction:String = ""
myAddress = myAddress.replacingOccurrences(of: " ", with: "+")
var CurrentLocationLatitude:String = ""
var CurrentLocationLongitude:String = ""
if let latitude = USERDEFAULT.value(forKey: "CurrentLocationLatitude") as? Double {
CurrentLocationLatitude = "\(latitude)"
//print(myLatitude)
}
if let longitude = USERDEFAULT.value(forKey: "CurrentLocationLongitude") as? Double {
CurrentLocationLongitude = "\(longitude)"
//print(myLongitude)
}
direction = String(format: "http://maps.apple.com/?saddr=%@,%@&daddr=%@,%@", CurrentLocationLatitude, CurrentLocationLongitude, latitude, longitude)
let directionsURL = URL.init(string: direction)
if #available(iOS 10, *) {
UIApplication.shared.open(directionsURL!)
} else {
UIApplication.shared.openURL(directionsURL!)
}
}
//For SAFARI Browser
else {
var direction:String = ""
direction = String(format: "http://maps.google.com/maps?q=%@,%@", latitude, longitude)
direction = direction.replacingOccurrences(of: " ", with: "+")
let directionsURL = URL.init(string: direction)
if #available(iOS 10, *) {
UIApplication.shared.open(directionsURL!)
} else {
UIApplication.shared.openURL(directionsURL!)
}
}
}
Hope, tego właśnie szukasz. / Align = "left" / :)Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-27 10:29:33
Jeśli potrzebujesz większej elastyczności niż daje format URL Google lub chcesz osadzić mapę w aplikacji zamiast uruchamiać aplikację map, przykład znajduje się pod adresem https://sourceforge.net/projects/quickconnect .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-03 12:57:22
Jeśli potrzebujesz większej elastyczności niż daje Format URL Google lub chcesz osadzić mapę w aplikacji zamiast uruchamiać aplikację map Oto przykład.
Dostarczy Ci nawet kod źródłowy do wykonania całego osadzenia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-06 03:40:34
IPhone4 iOS 6.0.1 (10a523)
Dla Safari i Chrome. Obie najnowsze wersje do tej pory(2013-Jun-10th).
Schemat URL poniżej również działa. Ale w przypadku Chrome działa tylko wewnątrz strony nie działa z paska adresu.
Maps:q=GivenTitle@latitude, longitude
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-10 11:18:43
**Getting Directions between 2 locations**
NSString *googleMapUrlString = [NSString stringWithFormat:@"http://maps.google.com/?saddr=%@,%@&daddr=%@,%@", @"30.7046", @"76.7179", @"30.4414", @"76.1617"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:googleMapUrlString]];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-18 12:38:23