usar ubicacion rutas para mapas manejar hay funciona esta disponibles desde como apple aplicacion actualizar ios swift annotations maps mkmapview

ios - ubicacion - maps para iphone



Agregar una anotaciĆ³n de marcador a una vista de mapa en una pulsaciĆ³n larga en swift (4)

  1. agregue UILongPressGestureRecognizer a su MapView

    var uilgr = UILongPressGestureRecognizer(target: self, action: "addAnnotation:") uilgr.minimumPressDuration = 2.0 map.add (uilgr) //IOS 9 map.addGestureRecognizer(uilgr)

  2. Agregar anotación en Long press detect - func:

    func addAnnotation(gestureRecognizer:UIGestureRecognizer){ if gestureRecognizer.state == UIGestureRecognizerState.Began { var touchPoint = gestureRecognizer.locationInView(map) var newCoordinates = map.convertPoint(touchPoint, toCoordinateFromView: map) let annotation = MKPointAnnotation() annotation.coordinate = newCoordinates CLGeocoder().reverseGeocodeLocation(CLLocation(latitude: newCoordinates.latitude, longitude: newCoordinates.longitude), completionHandler: {(placemarks, error) -> Void in if error != nil { println("Reverse geocoder failed with error" + error.localizedDescription) return } if placemarks.count > 0 { let pm = placemarks[0] as! CLPlacemark // not all places have thoroughfare & subThoroughfare so validate those values annotation.title = pm.thoroughfare + ", " + pm.subThoroughfare annotation.subtitle = pm.subLocality self.map.addAnnotation(annotation) println(pm) } else { annotation.title = "Unknown Place" self.map.addAnnotation(annotation) println("Problem with the data received from geocoder") } places.append(["name":annotation.title,"latitude":"/(newCoordinates.latitude)","longitude":"/(newCoordinates.longitude)"]) }) } }

  3. o puede agregar una anotación sin ningún título:

    func action(gestureRecognizer:UIGestureRecognizer){ var touchPoint = gestureRecognizer.locationInView(map) var newCoordinates = map.convertPoint(touchPoint, toCoordinateFromView: map) let annotation = MKPointAnnotation() annotation.coordinate = newCoordinates map.addAnnotation(annotation) }

Intento crear una aplicación para iPhone que requiera que los usuarios puedan presionar durante mucho tiempo sobre un lugar en una vista de mapa para soltar un alfiler allí. ¿Alguien sabe cómo se hace esto?

El comportamiento es observable en los mapas de manzana cuando presiona largamente en la pantalla. Soltará un pin y presentará una anotación que dice "pin caído"


Actualiza Swift3

func action(gestureRecognizer:UIGestureRecognizer){ let touchPoint = gestureRecognizer.location(in: mapView) let newCoordinates = mapView.convert(touchPoint, toCoordinateFrom: mapView) let annotation = MKPointAnnotation() annotation.coordinate = newCoordinates mapView.addAnnotation(annotation) }


1) UILongPressGestureRecognizer una instancia de UILongPressGestureRecognizer y UILongPressGestureRecognizer a MKMapView .

2) Cuando se llama al selector después de que el usuario tiene una pulsación larga, llame al método MKMapView en MKMapView con el título y la coordenada apropiados.

3) Luego, asegúrese de cumplir con MKMapViewDelegate e implementar viewForAnnotation: que se llamará justo después de agregar la anotación y devolver un MKPinAnnotationView


Primero declare UIGesture en ViewDidLoad

let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(addWaypoint(LongGesture:))) mapView.addGestureRecognizer(longGesture)

En segundo lugar, agregue la función para longPress

@objc func addWaypoint(LongGesture : UIGestureRecognizer) { let touchPoint = LongGesture.location(in: mapView) let wayCoords = mapView.convert(touchPoint, toCoordinateFrom: mapView) let location = CLLocation(latitude: wayCoords.latitude, longitude: wayCoords.longitude) myWaypoints.append(location) let wayAnnotation = MKPointAnnotation() wayAnnotation.coordinate = wayCoords wayAnnotation.title = "waypoint" myAnnotations.append(location) }

Recomiendo crear las anotaciones en una matriz que te servirá más tarde si quieres eliminarla, así ...

var myAnnotations = [CLLocation]()

Si tiene anotaciones diferentes, puede eliminar solo las anotaciones que desee, para eso cuando agregue una nueva anotación agregue a la matriz. Para eliminar solo un grupo de anotaciones solo haz lo siguiente

for dots in myAnnotations{ mapView.removeAnnotation(dots) }

Para eliminar todas las anotaciones, pruebe

mapView.removeAnnotations(mapView.annotations)

Disculpas por la traducción ...