앱 사용자에게 현재 위치를 물어보고 해당 위치에 핀을 자동 삭제하도록했습니다. 여기에 현재 위치를 잡아 내 코드가 있지만 현재 위치에 핀을 떨어 뜨리는 방법을 이해하는 데 문제가 있습니다. //Swift MKMapView 현재 위치에 핀 주석 놓기
추가 : 어떤 주석이 첨가 될 때마다
import UIKit
import MapKit
import CoreLocation
class MapVC: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
@IBOutlet weak var map: MKMapView!
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
// User's location
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
if #available(iOS 8.0, *) {
locationManager.requestAlwaysAuthorization()
} else {
// Fallback on earlier versions
}
locationManager.startUpdatingLocation()
// add gesture recognizer
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(MapVC.mapLongPress(_:))) // colon needs to pass through info
longPress.minimumPressDuration = 1.5 // in seconds
//add gesture recognition
map.addGestureRecognizer(longPress)
}
// func called when gesture recognizer detects a long press
func mapLongPress(_ recognizer: UIGestureRecognizer) {
print("A long press has been detected.")
let touchedAt = recognizer.location(in: self.map) // adds the location on the view it was pressed
let touchedAtCoordinate : CLLocationCoordinate2D = map.convert(touchedAt, toCoordinateFrom: self.map) // will get coordinates
let newPin = MKPointAnnotation()
newPin.coordinate = touchedAtCoordinate
map.addAnnotation(newPin)
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last! as CLLocation
let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))
//set region on the map
self.map.setRegion(region, animated: true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
이것을 구현하면 나에게 "사용하지 않은 식별자 'mapView'사용" – Kevin
'mapView'는'MapView' 변수의 이름이고'MapView' 변수는'map'입니다. 내 대답에 그것을 업데이 트했습니다 – Rajat
아 내가 본다. 이로 인해 오류가 수정되었습니다. 어떻게 테스트 할 수 있습니까? 지도로 실행할 때 앱의 현재 위치를 인식하지 못합니다. – Kevin