Wie ziehen Sie eine Anmerkung mit MKMapView gezogen wird? (iOS)
Ich habe einen UIViewController enthält eine MKMapView. Ich habe eine Anmerkung zu meiner aktuellen Position, indem Sie den folgenden code:
import UIKit
import MapKit
class LocationViewController: UIViewController , MKMapViewDelegate ,CLLocationManagerDelegate {
@IBOutlet weak var mapView: MKMapView!
var locationManager: CLLocationManager!
let regionRadius: CLLocationDistance = 1000
var token: dispatch_once_t = 0
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
}
func centerMapOnLocation(location: CLLocation) {
let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate,
regionRadius * 2.0, regionRadius * 2.0)
mapView.setRegion(coordinateRegion, animated: true)
}
func mapView(mapView: MKMapView, didUpdateUserLocation userLocation: MKUserLocation) {
if ((userLocation.coordinate.latitude != 0.0) && (userLocation.coordinate.longitude != 0.0)) {
dispatch_once(&token) {
self.centerMapOnLocation(userLocation.location!)
let annotation = MapPin(title: "This Location", locationName: "Test", discipline: "None", coordinate: userLocation.coordinate)
mapView.addAnnotation(annotation)
}
}
}
Möchte ich die Anmerkung verschieben Sie den Kartenausschnitt verschoben oder gezogen durch den Benutzer. Zum Beispiel meine aktuelle Position ist New Albany und, wenn ich ziehen Sie die Karte, nicht die Beschriftung ändert sich die Bühne schweben in der Luft, bis ich die Freigabe auf der Oberseite des Pontotoc, so die Anmerkung Punkte, in denen ich veröffentlicht. Ich wäre dankbar für jede trifft oder gute tutorials auf MapKit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, Sie müssen wieder einen Blick für Ihre Anmerkung. Sie können tun, so wie diese:
Dann, sobald Sie angenommen haben, die MKMapViewDelegate-Protokoll im controller greifst du die Koordinaten von einem pin nach dem ziehen es so:
Siehe auch meine Beispiel-code.
BEARBEITEN
alternative Lösung:
Vergessen Sie nicht
pinView?.animatesDrop = true
imviewForAnnotation
.Gibt es eine andere Lösung. In diesem Beitrag: bestimmen Sie, ob MKMapView war gezogen/verschoben, die Antwort mit den meisten Stimmen verwendet eine UIPanGestureRecognizer auf der Karte anzeigen lassen. Sie können diese zu bewegen, die pin, WIE Sie ziehen Sie die Karte.
Hier ist etwas code, dass update die Anmerkung in near-real-time als der Benutzer zieht oder drückt die Karte: