저는 신속한 신입 사원입니다. 3 & Xcode 8이며, 여기에서 질문하는 것이 처음입니다. Mapkit에 여러 개의 핀을 설정하고 동일한 Mapkit에 사용자의 위치를 동시에 추가하려고합니다. 또한이 Mapkit의 중심이 사용자의 위치가 아닌 특정 위치이기를 기대했습니다. 그러나, 나는 문제에 직면했다.Mapkit의 다른 위치에서 파란색 점으로 사용자의 위치를 표시하는 방법은 무엇입니까?
내 Mapkit에서 이러한 핀을 성공적으로 설정할 수 있지만 동일한 Mapkit에서 사용자의 위치를 표시 할 수 없습니다. 사용자의 위치를이 Mapkit의 중심으로 설정하려고하면 사용자의 위치를 성공적으로 표시 할 수 있습니다. 내 코드가 아래에 나와 있습니다.
import UIKit
import MapKit
import CoreLocation
class MapVC: UIViewController, CLLocationManagerDelegate {
@IBOutlet weak var MapView: MKMapView!
let manager = CLLocationManager()
func createSpanAndAnnotation() {
let FirstSpan: MKCoordinateSpan = MKCoordinateSpanMake(0.008, 0.008)
let originalLocation:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 24.942653, longitude: 121.368598)
let EdittedRegion:MKCoordinateRegion = MKCoordinateRegion(center: originalLocation, span: FirstSpan)
MapView.setRegion(EdittedRegion, animated: true)
let TemporaryGarbageCanLatitude = showData().garbageCanLatitudeArray
let TemporaryGarbageCanLongtitude = showData().garbageCanLontitudeArray
let TemporaryGarbageCanDiscription = showData().garbageCanDiscription
// 'showdata' is another class to store my data of garbageCans in another file.
for i in 0...TemporaryGarbageCanLatitude.count-1 {
let garbageCanLocation : CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: TemporaryGarbageCanLatitude[i], longitude: TemporaryGarbageCanLongtitude[i])
let pin = PinAnnotation(title: "Free Garbage Can", subtitle: TemporaryGarbageCanDiscription[i], coordinate: garbageCanLocation)
MapView.addAnnotation(pin)
}
}
//-------------------------------------<Above code could work successfully>-------------------------------------
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
self.MapView.showsUserLocation = true
}
func locationManager2() {
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
}
//--------------------------------<It seems that Above code could not work successfully>--------------------------------
override func viewDidLoad() {
super.viewDidLoad()
createSpanAndAnnotation()
locationManager2()
}
}
나는 빌드 단계에서 'CoreLocation.framework'를 추가하고, 또한 추가 한 '개인 정보 보호 - 때 사용 사용법 설명에서 위치'의 Info.plist 파일입니다. 또한 시뮬레이터를 실행할 때 위치 서비스를 설정했습니다. 또한 저는 미국에 살지 않았기 때문에 '시뮬레이터> 디버그> 위치> 맞춤 위치'로 이동하여 현재 내 위치를 바꿀 수도 있습니다.
그러나 위의 모든 작업을 완료 한 후에도 여전히 사용자의 위치를 표시 할 수 없습니다. 누구든지이 문제를 해결하는 데 도움이 될 수 있습니까? 아무도 도와 줄 수 없다면 고맙겠습니다. 고마워요!
는 (내 Mapkit 내 스크린 샷은 여기에있다,하지만 난 그것에 몇 가지 기밀 정보를 흐리게.) 내가 시뮬레이터에서 내 사용자의 위치를 변경하여 예기치 않게 내 문제를 해결할 것을 발견 simulator screen shot
MapKit에 위치 관리자가 필요하지 않습니다. 그냥 사용자 위치를 표시하도록 지시하면 자동으로 요청합니다. 그런 다음 isUserLocationVisible을 확인하여 실제로 있는지 확인한 다음 mapView.userLocation에서 사용자 위치를 확인하여 좌표를 확인합니다. 사용자를 지속적으로 추적하려는 경우 userTrackingMode를 설정할 수도 있습니다. – Brandon
사용자 위치에 대한 액세스를 요청하기 위해 어떤 시점에서 여전히'CLLocationManager'를 사용해야합니다. –
@Brandon 귀하의 지시에 감사드립니다. 나는 나중에 그 것들을 시도 할 것입니다. – fafa