MapKitでピンを同時に二つ置きたい
以下のサイトを参考にさせていただき、MapKitを使って、長押しをした場所にピンを置くプログラムを書きました。
長押しをすると同時に二つのAnnotationを置くようにしたかったのですが、最初の1つのAnnotationしか置くことができません。同時に二つのAnnotationを置くにはどうしたらいいでしょうか。
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate
{
@IBOutlet weak var mapView: MKMapView!
let locationManager = CLLocationManager()
//長押し検知器
var longtapGesture: UILongPressGestureRecognizer = UILongPressGestureRecognizer()
override func viewDidLoad()
{
super.viewDidLoad()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.startUpdatingLocation()
self.mapView.showsUserLocation = true
//長押し検知器の設定
//長押し時に呼びだすメソッド
self.longtapGesture.addTarget(self, action: "longPressed:")
//マップに長押し検知器を追加
self.mapView.addGestureRecognizer(self.longtapGesture)
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Location Delegate Methods
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
{
let location = locations.last
let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 1, longitudeDelta: 1))
self.mapView.setRegion(region, animated: true)
self.locationManager.stopUpdatingLocation()
}
func locationManager(manager: CLLocationManager, didFailWithError error: NSError)
{
print("Error: " + error.localizedDescription)
}
func longPressed(sender: UILongPressGestureRecognizer){
//指を離したときだけ反応するようにする
if(sender.state != .Began){
return
}
//senderから長押しした地図上の座標を取得
let location = sender.locationInView(self.mapView)
//CLLocationCoordinate2Dに変換
let mapPoint:CLLocationCoordinate2D = self.mapView.convertPoint(location, toCoordinateFromView: self.mapView)
//ピンを生成
let theRoppongiAnnotation = MKPointAnnotation()
//ピンを置く場所を設定
theRoppongiAnnotation.coordinate = mapPoint
//ピンのタイトルの設定
theRoppongiAnnotation.title = "ピン1"
//ピンのサブタイトルを設定
theRoppongiAnnotation.subtitle = "1個目のピン"
// //ピンを地図上に追加
// self.mapView.addAnnotation(theRoppongiAnnotation)
var newmapPoint:CLLocationCoordinate2D = self.mapView.convertPoint(location, toCoordinateFromView: self.mapView)
//ピンを生成
let secondAnnotation = MKPointAnnotation()
newmapPoint.longitude += 100
//ピンを置く場所を設定
secondAnnotation.coordinate = newmapPoint
//ピンのタイトルの設定
secondAnnotation.title = "ピン2"
//ピンのサブタイトルを設定
secondAnnotation.subtitle = "2個目のピン"
//ピンを地図上に追加
self.mapView.addAnnotations([secondAnnotation,theRoppongiAnnotation])
}
}