今回の記事は、mapview上に画面長押しで表示させたピンを、再度別の場所を長押しした際に消して、新しいピンをマップ上に表示させる手順をご紹介します。
地図アプリでエリア選択などで必須のメソッドになってくると思われるので是非覚えて使用できるようになっておくと便利です。では早速メイン記事に進んでいきます。
mapviewを長押ししてピンをつける設定
過去参考記事
・map長押しでピンを表示させる方法
まずは長押しでピンを表示させる処理についてですがそこまでは上記の記事を参考に進めてください。mapviewに地図を表示させる方法に関しても過去記事を参照してください。
mapviewからピンを削除する方法についてご紹介
mapviewにピンを表示させる際にすでにピンが表示されている場合は、元のピンを削除して新たなピンを追加する方法をご紹介します。
削除を行うメソッドは下記です。
removeAnnotation(annotation)
全体的なコードは下記です。
var annotation = MKPointAnnotation() //タップした現在地取得用のポイント変数
@IBAction func pressmap1(_ sender: UILongPressGestureRecognizer) {
let location:CGPoint = sender.location(in: map1)
let mapPoint:CLLocationCoordinate2D = map1.convert(location,toCoordinateFrom: map1)
if decide == false {
decide = true
} else {
map1.removeAnnotation(annotation)
}
if (sender.state == UIGestureRecognizer.State.ended){
annotation.coordinate = CLLocationCoordinate2DMake(mapPoint.latitude, mapPoint.longitude)
annotation.title = "出発点"
annotation.subtitle = "\(annotation.coordinate.latitude), \(annotation.coordinate.longitude)"
map1.addAnnotation(annotation)
}
}
FlagでdecideというFlagを立ててそれによって削除を行っております。あとはAnottetionを消すという操作です。
コメント