【问题标题】:Locations tracker icon not showing up on map位置跟踪器图标未显示在地图上
【发布时间】:2017-05-02 23:55:36
【问题描述】:

目前我正在设置定位服务,但由于某种奇怪的原因,跟踪器图标没有出现:

我知道它可以正常工作,因为如果我添加一个 pin,则 pin 会正确显示:

我不确定为什么跟踪器没有显示,这里是代码:

 @IBOutlet weak var map: MKMapView!

  let locationsManager = CLLocationManager()

  override func viewDidLoad() {
    super.viewDidLoad() 

  locationsManager.delegate = self
    locationsManager.desiredAccuracy = kCLLocationAccuracyBest // sets to best location accuracy
    locationsManager.requestWhenInUseAuthorization()// requests user location when app is opened
    locationsManager.startUpdatingLocation()// updates user location


  }

 func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    let userLocation: CLLocation = locations[0]

    let latitude: CLLocationDegrees = userLocation.coordinate.latitude
    let longitude: CLLocationDegrees = userLocation.coordinate.longitude

    let latDelta: CLLocationDegrees = 0.05
    let longDelta: CLLocationDegrees = 0.05

    let span: MKCoordinateSpan = MKCoordinateSpanMake(latDelta, longDelta)
    let location: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude,longitude)
    let region: MKCoordinateRegion = MKCoordinateRegionMake(location, span)

    map.setRegion(region, animated: true)

    let pin = MKPointAnnotation()
    pin.coordinate.latitude = userLocation.coordinate.latitude
    pin.coordinate.longitude = userLocation.coordinate.longitude
    pin.title = "My current location"
    map.addAnnotation(pin) 
  }

【问题讨论】:

    标签: ios swift mapkit cllocationmanager


    【解决方案1】:

    您需要将属性showsUsersLocation 设置为true。 https://developer.apple.com/reference/mapkit/mkmapview/1452682-showsuserlocation

    【讨论】:

      【解决方案2】:

      MKMapView可以为你显示用户位置和跟踪用户位置:

      map.showsUserLocation = true
      map.userTrackingMode = .follow
      

      无需实现自己的位置跟踪委托方法。

      【讨论】:

      • 这既快速又简单,但是如果我想在该位置添加一个图钉怎么办?在我在 locationManager 函数中执行此操作之前。
      • 这取决于您要如何添加图钉。如果您只是想要一个图钉而不是蓝色圆圈,那么您可以实现MKMapViewDelegate 方法mapView(_:viewFor:) 并为用户位置注释返回一个图钉视图。如果您想要在用户移动时使用一系列引脚,那么您可以使用您最初的方法。
      【解决方案3】:

      没关系,想通了。在 viewDidload() 中:

      map.showsUserLocation = true

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多