Cómo abrir Google Maps para mostrar la ruta usando Swift

Leí por Internet pero no pude encontrar una respuesta legítima. Necesito abrir Google Maps cuando el usuario hace clic en un button para mostrar las instrucciones. El inicio y el destino deben rellenarse automáticamente.

¿Cómo puedo lograr esto en Swift?

Si alguien tiene una solución, por favor proporcione un código de muestra. El inicio siempre será la location actual del usuario.

OK, encontré la respuesta yo mismo.

Si desea mostrar direcciones desde la location actual del usuario, deje el campo saddr blanco y en el campo daddr puede ingresar las coorderadas de destino.

Así es como lo hice

 if (UIApplication.shanetworkingApplication().canOpenURL(NSURL(string:"comgooglemaps://")!)) { UIApplication.shanetworkingApplication().openURL(NSURL(string: "comgooglemaps://?saddr=&daddr=\(place.latitude),\(place.longitude)&directionsmode=driving")!) } else { NSLog("Can't use comgooglemaps://"); } } 

Para cualquier consulta adicional, puede consultar este enlace . Esquema de URL de Google Map

La respuesta ya está allí, pero en versiones anteriores de Swift

En Swift 3

 //Working in Swift new versions. if (UIApplication.shanetworking.canOpenURL(URL(string:"comgooglemaps://")!)) { UIApplication.shanetworking.openURL(NSURL(string: "comgooglemaps://?saddr=&daddr=\(Float(latitude!)),\(Float(longitude!))&directionsmode=driving")! as URL) } else { NSLog("Can't use com.google.maps://"); } 

Quiero la posibilidad de que el usuario pueda abrir Google Maps a través del browser (solo funciona cuando el usuario no tiene la aplicación Google Maps) Google proporciona aquí una documentation para eso. Desde iOS 9 debes configurar un esquema. Esto lo encontrarás aquí .

Para mí, la solución de Google no funciona . Tal vez eres más inteligente y encuentras una solución (¡publica!).

Lo que sea que hice fue una simple llamada web:

 let lat = 37.7 let lon = -122.4 if (UIApplication.shanetworkingApplication().canOpenURL(NSURL(string:"https://maps.google.com")!)) { UIApplication.shanetworkingApplication().openURL(NSURL(string: "https://maps.google.com/?q=@\(lat),\(lon)")!) } 

Esto podría ser usado como una especie de reserva de sumeshs answer.

  let lat = self.upcomingListArr[indexPath.item].latitude! let long = self.upcomingListArr[indexPath.item].longitude! if (UIApplication.shanetworking.canOpenURL(NSURL(string:"comgooglemaps://")! as URL)) { UIApplication.shanetworking.openURL(NSURL(string: "comgooglemaps://?saddr=&daddr=\(String(describing: lat)),\(String(describing: long))")! as URL) } else { UIApplication.shanetworking.openURL(NSURL(string: "https://www.google.co.in/maps/dir/?saddr=&daddr=\(String(describing: lat)),\(String(describing: long))")! as URL) } 

1) Método: puede pasar la única dirección de destino que la aplicación actual de maps searchá automáticamente.

 let strLat : String = "23.035007" let strLong : String = "72.529324" override func viewDidLoad() { super.viewDidLoad() if (UIApplication.shanetworking.canOpenURL(URL(string:"comgooglemaps://")!)) { UIApplication.shanetworking.openURL(URL(string:"comgooglemaps://?saddr=&daddr=\(strLat),\(strLong)&directionsmode=driving")!) } else { print("Can't use comgooglemaps://"); } } 

2) Puede pasar tanto la dirección de inicio como la de destino

 let strLat : String = "23.035007" let strLong : String = "72.529324" let strLat1 : String = "23.033331" let strLong2 : String = "72.524510" override func viewDidLoad() { super.viewDidLoad() if (UIApplication.shanetworking.canOpenURL(URL(string:"comgooglemaps://")!)) { UIApplication.shanetworking.openURL(URL(string:"comgooglemaps://?saddr=\(strLat),\(strLong)&daddr=\(strLat1),\(strLong2)&directionsmode=driving&zoom=14&views=traffic")!) } else { print("Can't use comgooglemaps://"); } }