¿Cómo se abre la aplicación de mapas mediante progtwigción en coordenadas rápidas?

Tengo latitud y longitud que quiero abrir en mi aplicación de mapa. Probé este código desde AQUÍ .

func goToMap(){ var lat1 : NSString = self.venueLat var lng1 : NSString = self.venueLng var latitude:CLLocationDegrees = lat1.doubleValue var longitude:CLLocationDegrees = lng1.doubleValue var coordinate = CLLocationCoordinate2DMake(latitude, longitude) var placemark : MKPlacemark = MKPlacemark(coordinate: coordinate, addressDictionary:nil) var mapItem:MKMapItem = MKMapItem(placemark: placemark) mapItem.name = "Target location" let launchOptions:NSDictionary = NSDictionary(object: MKLaunchOptionsDirectionsModeDriving, forKey: MKLaunchOptionsDirectionsModeKey) var currentLocationMapItem:MKMapItem = MKMapItem.mapItemForCurrentLocation() MKMapItem.openMapsWithItems([currentLocationMapItem, mapItem], launchOptions: launchOptions) } 

Esta función abre mapas con éxito, pero no muestra ningún pin. También muestra la ubicación del usuario que no quiero. Solo quiero un pin en el mapa para la latitud y la longitud proporcionadas.

Este código está funcionando bien para mí.

 func openMapForPlace() { let lat1 : NSString = self.venueLat let lng1 : NSString = self.venueLng let latitude:CLLocationDegrees = lat1.doubleValue let longitude:CLLocationDegrees = lng1.doubleValue let regionDistance:CLLocationDistance = 10000 let coordinates = CLLocationCoordinate2DMake(latitude, longitude) let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance) let options = [ MKLaunchOptionsMapCenterKey: NSValue(MKCoordinate: regionSpan.center), MKLaunchOptionsMapSpanKey: NSValue(MKCoordinateSpan: regionSpan.span) ] let placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil) let mapItem = MKMapItem(placemark: placemark) mapItem.name = "\(self.venueName)" mapItem.openInMapsWithLaunchOptions(options) } 

Para swift 3.0:

 import UIKit import MapKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() openMapForPlace() } func openMapForPlace() { let latitude: CLLocationDegrees = 37.2 let longitude: CLLocationDegrees = 22.9 let regionDistance:CLLocationDistance = 10000 let coordinates = CLLocationCoordinate2DMake(latitude, longitude) let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance) let options = [ MKLaunchOptionsMapCenterKey: NSValue(mkCoordinate: regionSpan.center), MKLaunchOptionsMapSpanKey: NSValue(mkCoordinateSpan: regionSpan.span) ] let placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil) let mapItem = MKMapItem(placemark: placemark) mapItem.name = "Place Name" mapItem.openInMaps(launchOptions: options) } } 

Si solo desea dar instrucciones de conducción al usuario, esta es la última syntax de Swift en su forma más simple:

 let coordinate = CLLocationCoordinate2DMake(theLatitude,theLongitude) let mapItem = MKMapItem(placemark: MKPlacemark(coordinate: coordinate, addressDictionary:nil)) mapItem.name = "Target location" mapItem.openInMaps(launchOptions: [MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving]) 

El enfoque anterior de MKMapItem funciona muy bien si desea un control granular sobre la información que se muestra en Maps.

De lo contrario, el siguiente código también funciona muy bien,:

 // Open and show coordinate let url = "http://maps.apple.com/maps?saddr=\(coord.latitude),\(coord.longitude)" UIApplication.shared.openURL(URL(string:url)!) // Navigate from one coordinate to another let url = "http://maps.apple.com/maps?saddr=\(from.latitude),\(from.longitude)&daddr=\(to.latitude),\(to.longitude)" UIApplication.shared.openURL(URL(string:url)!) 

Sin embargo, el código anterior no le permite enviar un nombre personalizado del lugar. En cambio, mostrará la dirección.

El código anterior también le permite navegar desde cualquier coordenada de origen, que no sé si puede hacer con el enfoque de MKMapItem.

Esto funciona como un encanto para mí

 let coordinate = CLLocationCoordinate2DMake(theLatitude, theLongitude) 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) 

Puede llamar a la función de clase de los MKMapItem pasan MKMapItem allí, solo usa el primero y el último para la fuente / destino de manera apropiada, si desea pasar más de dos elementos.

Swift 4

 let source = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: lat, longitude: lng))) source.name = "Source" let destination = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: lat, longitude: lng))) destination.name = "Destination" MKMapItem.openMaps(with: [source, destination], launchOptions: [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving]) 

Puede usar el código a continuación para mostrar el PIN en lat, mucho tiempo en el mapa de Apple.

 let coordinates = CLLocationCoordinate2DMake(-37.848854,144.990295) let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, 1000, 1000) let placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil) let mapItem = MKMapItem(placemark: placemark) mapItem.name = “Desired place” mapItem.openInMaps(launchOptions:[ MKLaunchOptionsMapCenterKey: NSValue(mkCoordinate: regionSpan.center) ] as [String : Any])