Карта Swift 4 не отображает текущее местоположение пользователей - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь показать текущее местоположение пользователей на карте, но ничего не работает.Куда я иду не так?

import UIKit
import CoreLocation
import MapKit

class MapViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {

    var window: UIWindow?
    var mapView: MKMapView?
    let locationManager = CLLocationManager()

    let distanceSpan: Double = 500

    override func viewDidLoad() {
        super.viewDidLoad()

        setupNavBar()
        setupMapView()
        setupLocationManager()
    }

    fileprivate func setupNavBar() {
        self.navigationItem.title = "Near By"
        self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .done, target: self, action: #selector(handleDissmiss))
    }

    fileprivate func setupLocationManager() {self.locationManager.requestWhenInUseAuthorization()

        if CLLocationManager.locationServicesEnabled() {
            locationManager.delegate = self
            locationManager.desiredAccuracy = kCLLocationAccuracyBest
            locationManager.startUpdatingLocation()
        }

    }

    fileprivate func setupMapView() {
        self.window = UIWindow(frame: UIScreen.main.bounds)
        self.view.backgroundColor = UIColor.white
        self.mapView?.showsUserLocation = true
        self.mapView = MKMapView(frame: CGRect(x: 0, y: 20, width: (self.window?.frame.width)!, height: view.frame.height))
        self.view.addSubview(self.mapView!)
    }

1 Ответ

0 голосов
/ 05 февраля 2019

Вы устанавливаете свойство showUserLocation перед выделением вашего mapView.

В будущем, чтобы избежать такой ошибки, вы можете использовать другой стиль кодирования, в котором вы не будете использовать опционально, например,

 fileprivate func setupMapView() {
    let mView = MKMapView(frame: CGRect(x: 0, y: 20, width: view.frame.width, height: view.frame.height))
    mView.showsUserLocation = true
    view.addSubview(mView)
    self.mapView = mView
}

Кроме того, убедитесь, что ваш Info.plistсодержит ключ NSLocationWhenInUseUsageDescription - как описано https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...