在iOS中,使用Swift,我想显示用户的位置,但蓝点未出现在MapView上

时间:2018-10-06 11:03:46

标签: ios swift mkmapview core-location mkuserlocation

蓝点未出现在地图上。看来CLLocation管理器和self.mapView.userLocation.coordinate值之间存在一些断开。

CLLocation管理器正确返回Apple Campus坐标,但是mapView.userLocation.coordinate值的纬度和经度均返回0,0。

我已经调试了好几个小时。

下面的更多信息:

在viewDidAppear和viewDidLoad中,我将用户的当前位置打印到控制台,如下所示:

print(self.mapView.userLocation.coordinate)

这是在控制台中呈现的输出:

  

CLLocationCoordinate2D(纬度:0.0,经度:0.0)

这是我的MapViewController的样子:

import UIKit
import CoreLocation
import MapKit

class MapViewController: UIViewController, MKMapViewDelegate {

@IBOutlet weak var mapView: MKMapView!
var manager: CLLocationManager? = CLLocationManager()

override func viewDidLoad() {
    super.viewDidLoad()

    // map stuff
    manager?.delegate = self
    manager?.desiredAccuracy = kCLLocationAccuracyBest
    self.mapView.delegate = self

    // print user's current location to console
    print("user location in view did load:")
    print(self.mapView.userLocation.coordinate)

}

override func viewDidAppear(_ animated: Bool) {
    manager?.requestAlwaysAuthorization()
    manager?.startUpdatingLocation()

    self.mapView.showsUserLocation = true
    self.mapView.userTrackingMode = .follow

    // print user's current location to console
    print("user location in view did appear:")
    print(self.mapView.userLocation.coordinate)

    animateMapToUserLocation()
}

}

注意:

  1. 我已将相关的隐私消息添加到Info.plist文件中。

  2. 情节提要中的MapView用实心圆连接到正确的ViewController。

  3. MapViewController的实例如下:

    let storyboard = UIStoryboard(名称:“ Main”,捆绑包:Bundle.main)                         让mapVC = storyboard.instantiateViewController(withIdentifier:“ MapVC”)为? MapViewController                         self.present(mapVC !,动画:true,完成:nil)

2 个答案:

答案 0 :(得分:1)

您是否实现了viewForAnnotation函数?您是否正在检查您是否没有为MKUserLocation绘制(或绘制失败)别针?

例如

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    if annotation is MKUserLocation {
        return nil
    }
    ...
}

还检查设置>隐私>位置服务>您的应用

enter image description here

答案 1 :(得分:0)

我的控制流程已关闭。该地图将在应用有权检索用户位置之前呈现。现在正在工作。