これまでに行ったことは地図を作成することでした。次に、ユーザーの位置を表示し、地図を中心に移動するように表示します(車など)注釈ピン付きの長押しのジェスチャ認識機能を作成する
しかし、今では、ユーザーが入力を行うとピンが落ちるようにしたいと思います。私はチュートリアルで苦労し、シミュレータがクラッシュする。
mapView
にピンを落とすように、どうすればlongPressGesturerecognizer
を追加しますか?ここで
は私のコード - あなたはまた、ドロップピン用のタップジェスチャーを使用することができます
import UIKit
import MapKit
import CoreLocation
class Page2: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate{
@IBOutlet var mapView: MKMapView!
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.startUpdatingLocation()
//blue dot on the map
self.mapView.showsUserLocation = true
//tracking mode on
self.mapView.userTrackingMode = .follow
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// location Manager Delegate center user on map
private func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
let location = locations.last
let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: (location?.coordinate.longitude)!)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.005, longitudeDelta: 0.005)) //zoom on map
self.mapView.setRegion(region, animated: true)
self.locationManager.stopUpdatingLocation()
}
// print errors
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error){
print("Errors: " + error.localizedDescription)
}
}
おかげで、私はこの行に、このエラーをgetingているように見える longPressGesture = UILongPressGestureRecognizer(ターゲットみましょう:自己、アクション:#selector(addAnnotationOnLongPress(ジェスチャー:)))addAnnotationOnLongPressのローカル変数の 使用を(ジェスチャー:) 'を宣言する前に – sabrefm1
心配する必要はありません – sabrefm1
座標だけが出力に記録されますが、ピンは削除されません。 – sabrefm1