Come posso lanciare Google Maps applicazione iPhone dall'interno della mia stessa applicazione nativa?

StackOverflow https://stackoverflow.com/questions/30058

  •  09-06-2019
  •  | 
  •  

Domanda

Il Documentazione Per Gli Sviluppatori Apple (il link è morto) spiega che se si inserisce un link in una pagina web e quindi fare clic su di esso, mentre si utilizza Safari Mobile su iPhone, l'applicazione Google Maps, che viene fornita come standard con l'iPhone verrà lanciato.

Come posso eseguire la stessa applicazione Google Maps con un indirizzo specifico dal di dentro la mia applicazione iPhone nativa (cioènon una pagina web tramite Safari Mobile) nello stesso modo che toccando un indirizzo nella Rubrica lancia la mappa?

NOTA:QUESTO FUNZIONA SOLO SUL DISPOSITIVO STESSO.NON NEL SIMULATORE.

È stato utile?

Soluzione

Per iOS 5.1.1 e inferiore, utilizzare il openURL metodo di UIApplication.Si esibiranno il normale iPhone magico URL reinterpretazione.così

[someUIApplication openURL:[NSURL URLWithString:@"http://maps.google.com/maps?q=London"]]

dovrebbe invocare l'applicazione Google maps.

Da iOS 6, sarete invocando Apple app Mappe.Per questo, è necessario configurare un MKMapItem oggetto con la posizione che si desidera visualizzare, quindi inviare il openInMapsWithLaunchOptions messaggio.Per avviare alla posizione corrente, prova a:

[[MKMapItem mapItemForCurrentLocation] openInMapsWithLaunchOptions:nil];

Avrai bisogno di essere collegato alla MapKit per questo (e verrà richiesto per l'accesso alla posizione, credo).

Altri suggerimenti

Esattamente.Il codice che avete bisogno di per ottenere questo risultato è qualcosa di simile:

UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=London"]];

dal come per la documentazione, UIApplication è disponibile solo nell'Applicazione Delegato a meno che la chiamata sharedApplication.

Per aprire Google Maps a specifiche coordinate, prova questo codice:

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]];

È possibile sostituire il latlong stringa con la posizione corrente dal CoreLocation.

È inoltre possibile specificare il livello di zoom, utilizzando la (”z“) bandiera.I valori sono 1-19.Ecco un esempio:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://maps.google.com/maps?z=8"]];

C'è ora anche l'App Store di Google Maps app, documentate in https://developers.google.com/maps/documentation/ios/urlscheme

Quindi devi prima controllare che sia installato:

[[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"comgooglemaps://"]];

E poi si può sostituire in modo condizionale http://maps.google.com/maps?q= con comgooglemaps://?q=.

Qui c'è la Mela URL Schema di Riferimento per il Link alla Mappa: https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html

Le regole per la creazione di un valido collegamento della mappa sono come segue:

  • Il dominio deve essere google.com e il sottodominio deve essere maps o ditu.
  • Il percorso deve essere /, /maps /locale, o /m se la query contiene il sito chiave e il valore.
  • Il percorso non può essere /mappe/*.
  • Tutti i parametri devono essere supportati.Vedere la Tabella 1 per la lista dei parametri supportati**.
  • Un parametro non può essere q=* se il valore è un URL (così KML non è preso).
  • I parametri non possono includere view=testo o dirflg=r.

**Vedi il link sopra per un elenco dei parametri supportati.

Se si utilizza ios 10 quindi si prega di non dimenticare di aggiungere Query Schemi di Info.plist

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>comgooglemaps</string>
</array>

Se si sta utilizzando 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]];
    }

Se si utilizza 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)!)
}

Se si utilizza 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)!)
}

Per il telefono in questione, sono i test sul simulatore?Questo funziona solo sul dispositivo stesso.

Inoltre, openURL restituisce un valore booleano, che è possibile utilizzare per controllare se il dispositivo che si sta eseguendo su supporti la funzionalità.Per esempio, non è possibile effettuare chiamate su un iPod Touch :-)

Basta chiamare questo metodo e aggiungere le Mappe di Google Schema URL nel tuo .file plist stesso come questo Risposta.

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!)
        }
    }
}

La speranza, questo è quello che stai cercando.La preoccupazione di tornare a me.:)

"g" per modificare la "q"

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=London"]]

Se hai ancora difficoltà, questo video mostra come ottenere "le Mie mappe" da google per la visualizzazione su iphone-si può poi prendere il link e inviarlo a chiunque, e funziona.

http://www.youtube.com/watch?v=Xo5tPjsFBX4

Per spostare la mappa di Google di utilizzare questa api e inviare destinazione latitudine e longitudine

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];

Se avete bisogno di più flexabilty di Google URL formato dà o si desidera incorporare una mappa in applicazione invece di lanciare l'app mappa c'è un esempio trovato in https://sourceforge.net/projects/quickconnect.

Se avete bisogno di più flessibilità rispetto a Google URL formato dà o si desidera incorporare una mappa in applicazione invece di lanciare l'app mappa qui è un esempio.

Sarà anche in grado di fornire il codice sorgente per l'incorporamento.

iPhone4 iOS 6.0.1 (10A523)

Sia per Safari e Chrome.Sia la versione più recente fino ad oggi (2013-Giu-10).

Lo schema URL di seguito anche il lavoro.Ma nel caso di Chrome funziona solo all'interno della pagina non funziona dalla barra degli indirizzi.

maps:q=GivenTitle@latitude,longtitude

**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]];

Codice di lavoro come Swift, 4:

Passo 1 - Aggiungere la Seguente info.plist

<key>LSApplicationQueriesSchemes</key>
<array>
<string>googlechromes</string>
<string>comgooglemaps</string>
</array>

Passo 2 - Utilizzare il Codice riportato di Seguito per visualizzare le Mappe di Google

    let destinationLatitude = "40.7128"
    let destinationLongitude = "74.0060"

    if UIApplication.shared.canOpenURL(URL(string: "comgooglemaps:")!) {
        if let url = URL(string: "comgooglemaps://?ll=\(destinationLatitude),\(destinationLongitude)"), !url.absoluteString.isEmpty {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        }
    }else{
        if let url = URL(string: "http://maps.google.com/maps?ll=\(destinationLatitude),\(destinationLongitude)"), !url.absoluteString.isEmpty {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        }
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top