Как установить координатную ось на mapkit в Swift 4.2

Я хочу такое приложение, как Uber. Я могу сохранить координаты пользователя и показать в виде таблицы. Но когда я хочу показать пользовательские координаты на карте, это не работает на стороне водителя. В чем моя ошибка?

Контроллер драйвера:

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let stoaryboard = UIStoryboard(name: "Main", bundle: nil)
    let requestVC = stoaryboard.instantiateViewController(withIdentifier: "TaxiRequestVC") as! TaxiRequestAcceptViewController
    let snapshot = taksiRequests[indexPath.row]
    if let taxiRequestData = snapshot.value as? [String:AnyObject]{
        if let email = taxiRequestData["email"] as? String{
            if let lat = taxiRequestData["lat"] as? Double{
                if let lon = taxiRequestData["lon"] as? Double{
                    passengerVC.userEmail = email
                    passengerVC.latitude = lat
                    passengerVC.longitude = lon
                }
            }
        }
    }

    self.present(requestVC, animated: true, completion: nil)
}

И RequestVC, как это:

@IBOutlet weak var requestMap: MKMapView!
var userEmail:String?
var latitude:Double?
var longitude:Double?

override func viewDidLoad() {
    super.viewDidLoad()
    DispatchQueue.main.async {
        if let lat = self.latitude{
            if let lon = self.longitude{
                let center = CLLocationCoordinate2DMake(lat, lon)
                let span = MKCoordinateSpanMake(0.01, 0.01)
                let region = MKCoordinateRegion(center: center, span: span)
                self.requestMap.setRegion(region, animated: true)
                let annotation = MKPointAnnotation()
                annotation.coordinate = center
                if let email = self.userEmail{
                    annotation.title = email
                }

                self.requestMap.addAnnotation(annotation)
            }
        }
    }
}

Если я работаю в печатном центре или по электронной почте. Но карта не работает. Есть ли у вас какие-либо идеи?

2 ответа

Похоже, вы делаете что-то не так в раскадровке.

Я скопировал ваш код и использовал его в моей демонстрации.

Пожалуйста, проверь это.

Посмотреть контроллер, откуда я прохожу лат долго

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func gotMap(_ sender: Any) {
        let map = Map()
        map.latitude = 23.0225
        map.longitude = 72.5714
        self.navigationController?.pushViewController(map, animated: true)
    }

}

Посмотреть контроллер, с которого я показываю карту

import UIKit
import MapKit
class Map: UIViewController {
    var requestMap = MKMapView()
    var userEmail:String?
    var latitude:Double?
    var longitude:Double?

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(requestMap)
        requestMap.frame = view.frame

        DispatchQueue.main.async {
            if let lat = self.latitude{
                if let lon = self.longitude{
                    let center = CLLocationCoordinate2DMake(lat, lon)
                    let span = MKCoordinateSpanMake(0.01, 0.01)
                    let region = MKCoordinateRegion(center: center, span: span)
                    self.requestMap.setRegion(region, animated: true)
                    let annotation = MKPointAnnotation()
                    annotation.coordinate = center
                    if let email = self.userEmail{
                        annotation.title = email
                    }

                    self.requestMap.addAnnotation(annotation)
                }
            }
        }
    }
}

Я думаю, что вы забыли добавить CLLocationManager Делегируйте методы, посмотрите этот урок, это поможет вам.

И добавьте ключи доступа в info.plist для доступа к просмотру карты.

Другие вопросы по тегам