Como posso iniciar o Google Maps, aplicativo de iPhone de dentro do meu próprio aplicativo nativo?

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

  •  09-06-2019
  •  | 
  •  

Pergunta

O A Apple Documentação Do Desenvolvedor (o link está morto agora) explica que, se você colocar um link em uma página da web e, em seguida, clique em-lo, enquanto usando o Mobile Safari no iPhone, a aplicação Google Maps que é fornecido como padrão com o iPhone vai lançar.

Como posso iniciar a mesma aplicação Google Maps com um endereço específico de dentro do meu próprio aplicativo para iPhone (i.e.não uma página web através do Mobile Safari) da mesma forma que tocar em um endereço em Contatos lança o mapa?

NOTA:ISSO SÓ FUNCIONA NO PRÓPRIO DISPOSITIVO.NÃO NO SIMULADOR.

Foi útil?

Solução

Para o iOS 5.1.1 e inferior, use o openURL método de UIApplication.Ele vai executar o normal, iPhone mágico URL reinterpretação.então,

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

deve invocar o aplicativo do Google maps.

A partir do iOS 6, você estará invocando Apple próprio aplicativo de Mapas.Para isso, configure uma MKMapItem objeto com o local que você deseja exibir e, em seguida, enviá-lo a openInMapsWithLaunchOptions mensagem.Para iniciar a localização actual, tente:

[[MKMapItem mapItemForCurrentLocation] openInMapsWithLaunchOptions:nil];

Você precisa ser ligadas contra MapKit para isso (e ele irá pedir para acesso ao local, eu acredito).

Outras dicas

Exactamente.O código que você precisa para alcançar isso é algo assim:

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

desde de acordo com a documentação, UIApplication só está disponível no Aplicativo do Delegado, a menos que você chamar sharedApplication.

Para abrir o Google Maps em específico coordena, tente este código:

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

Você pode substituir o latlong cadeia de caracteres com o local atual de CoreLocation.

Você também pode especificar o nível de zoom, usando a ("z") sinalizador.Os valores são 1-19.Aqui está um exemplo:

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

Há também agora a App Store, aplicativo do Google Maps, documentadas em https://developers.google.com/maps/documentation/ios/urlscheme

Assim que você primeiro verifique se ele está instalado:

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

E, em seguida, você pode substituir condicionalmente http://maps.google.com/maps?q= com comgooglemaps://?q=.

Aqui está a Apple Esquema de URL de Referência para os Links do Mapa: https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html

As regras para a criação de um mapa válido link são como segue:

  • O domínio deve ser google.com e o subdomínio deve ser mapas ou ditu.
  • O caminho tem de ser /, /maps /local, ou /m se a consulta contiver site como a chave e locais como o valor.
  • O caminho não pode ser /maps/*.
  • Todos os parâmetros devem ser suportados.Consulte a Tabela 1 para a lista de parâmetros suportados**.
  • Um parâmetro pode ser q=* se o valor é um URL (para KML não pegou).
  • Os parâmetros não podem incluir view=texto ou dirflg=r.

**Consulte o link acima para a lista de parâmetros suportados.

Se você estiver usando o ios 10 então por favor não se esqueça de adicionar Consulta Regimes de Informações.plist

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

Se você estiver usando o 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 você estiver usando 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 você estiver usando 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)!)
}

Para o telefone pergunta, você está testes no simulador?Isso só funciona no próprio dispositivo.

Também, openURL retorna um booleano, que você pode usar para verificar se o dispositivo que está executando o nas suporta a funcionalidade.Por exemplo, você não pode fazer chamadas em um iPod Touch :-)

Apenas chamar este método e adicionar o Google Maps Esquema de URL para o seu .arquivo plist mesmo como este Responder.

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

Esperança, isto é o que você está procurando.Toda e qualquer preocupação de voltar para mim.:)

"g" alterar para "q"

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

Se você ainda estiver tendo problemas, este vídeo mostra como entrar "Meus mapas" do google para mostrar o iphone -- em seguida, você pode tomar o link e enviá-lo para alguém e ele funciona.

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

Para mover para mapa do Google usar essa api e enviar latitude e longitude do destino

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 você precisa de mais flexabilty que o Google formato de URL que dá a você ou você gostaria de incorporar um mapa na aplicação em vez de lançar o aplicativo do mapa, há um exemplo encontrado em https://sourceforge.net/projects/quickconnect.

Se você precisa de mais flexibilidade do que o Google formato de URL que dá a você ou você gostaria de incorporar um mapa na aplicação em vez de lançar o aplicativo do mapa aqui está um exemplo.

Ele mesmo irá fornecer-lhe o código fonte para fazer tudo o que a incorporação.

iPhone4 iOS 6.0.1 (10A523)

Para tanto Safari e Chrome.Tanto a versão mais recente até agora (2013-Jun-10).

O esquema de URL abaixo também funciona.Mas no caso do Chrome, só funciona dentro da página não funciona na barra de endereços.

maps:q=GivenTitle@latitude,longitude

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

Código de trabalho, como no Swift 4:

Passo 1 - Adicionar o Seguinte para informações.plist

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

Passo 2 - Use o Seguinte Código para Mostrar no Google Maps

    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)
        }
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top