How to open google maps app with a dropped pin ? - Swift
if UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!) {
UIApplication.shared.open(URL(string: "comgooglemaps://?center=\(self.latitude),\(self.longitude)")!, options: [:], completionHandler: nil)
} else {
print("Opening in Apple Map")
let coordinate = CLLocationCoordinate2DMake(self.latitude, self.longitude)
let region = MKCoordinateRegionMake(coordinate, MKCoordinateSpanMake(0.01, 0.02))
let placemark = MKPlacemark(coordinate: coordinate, addressDictionary: nil)
let mapItem = MKMapItem(placemark: placemark)
let options = [
MKLaunchOptionsMapCenterKey: NSValue(mkCoordinate: region.center),
MKLaunchOptionsMapSpanKey: NSValue(mkCoordinateSpan: region.span)]
mapItem.name = theLocationName
mapItem.openInMaps(launchOptions: options)
}
Use this code for opening in google map if it's installed else open in default apple map.
q: The query string for your search.
It creates a marker in given coordinates. Try this
if (UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)) {
UIApplication.shared.open(URL(string:"comgooglemaps://?center=\(self.location.coordinate.latitude),\(self.location.coordinate.longitude)&zoom=14&views=traffic&q=\(self.location.coordinate.latitude),\(self.location.coordinate.longitude)")!, options: [:], completionHandler: nil)
} else {
print("Can't use comgooglemaps://")
}
}
First open Info.plist
as Source Code (Righ Click on file Info.plis, then select Source Code) and add this:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>googlechromes</string>
<string>comgooglemaps</string>
</array>
Next to make it easier to open Google Maps, create function like this one:
func openGoogleMaps() {
if (UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)) {
UIApplication.shared.openURL(URL(string:
"comgooglemaps://?center=\(myLatitude),\(myLongitude)&zoom=14&views=traffic")!)
} else {
print("Can't use comgooglemaps://")
}
}
Whenever you want to open Google Maps with given coordinate, you just call the function openGoogleMaps()
.
For more check Maps URLs and Maps SDK for iOS
Here is the Swift 5 solution, where you can be sure that the map is shown in the browser if the Google Maps app is not installed or in the Google Maps app if it is installed on the device, both cases with the pin of the location.
if UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!) {
UIApplication.shared.open(URL(string:"comgooglemaps://?center=\(latitude),\(longitude)&zoom=14&views=traffic&q=\(latitude),\(longitude)")!, options: [:], completionHandler: nil)
} else {
UIApplication.shared.open(URL(string: "http://maps.google.com/maps?q=loc:\(latitude),\(longitude)&zoom=14&views=traffic&q=\(latitude),\(longitude)")!, options: [:], completionHandler: nil)
}