首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IOS Map Pins未显示?

IOS Map Pins未显示?
EN

Stack Overflow用户
提问于 2021-11-11 13:32:04
回答 1查看 39关注 0票数 0

我正在为我的iOS代码而挣扎。这个项目的总体目标是在地图上显示引脚,我已经尝试了多种方法,使引脚出现在地图上,如下图所示,我不确定我做错了什么。代码运行正常,引脚没有出现。我已经对我的函数进行了更改,但似乎得到了相同的错误。对我可能遗漏的东西有什么见解吗?

“导入UIKit导入MapKit

类MapViewController: UIViewController,MKMapViewDelegate {

代码语言:javascript
复制
@IBOutlet weak var mapView: MKMapView!
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
@IBOutlet weak var logout: UIBarButtonItem!
@IBOutlet weak var refresh: UIBarButtonItem!
@IBOutlet weak var pinDrop: UIBarButtonItem!


var studentLocation = [StudentInformation]()
var annotations = [MKPointAnnotation]()

override func viewDidLoad() {
    super.viewDidLoad()
    
    // Do any additional setup after loading the view.
}

override func viewDidAppear (_ animated: Bool) {
    super.viewDidAppear(true)
    getStudentPins()
}

@IBAction func refresh(_ sender: UIBarButtonItem) {
    getStudentPins ()
}
@IBAction func logout(_ sender: UIBarButtonItem) {
    self.activityIndicator.startAnimating()
    UdacityClient.logout {
        DispatchQueue.main.async {
            self.dismiss(animated: true, completion: nil)
            self.activityIndicator.stopAnimating()
        }
    }
}

@IBAction func addLocation(_ sender: Any) {
    performSegue(withIdentifier: "addLocation", sender: nil)
}

func getStudentPins () {
    self.activityIndicator.startAnimating()
    UdacityClient.getStudentLocations() { locations, error in
        self.mapView.removeAnnotations(self.annotations)
        self.annotations.removeAll()
        self.studentLocation = locations ?? []
        for dictionary in locations ?? [] {
            let latitude = CLLocationDegrees(dictionary.latitude ?? 0.0)
            let longitude = CLLocationDegrees(dictionary.longitude ?? 0.0)
            let coordinate = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
            let firstName = dictionary.firstName
            let lastName = dictionary.lastName
            let mediaURL = dictionary.mediaURL
            let annotation = MKPointAnnotation()
            annotation.coordinate = coordinate
            annotation.title = "\(firstName) \(lastName)"
            annotation.subtitle = mediaURL
            self.annotations.append(annotation)
        }
        DispatchQueue.main.async {
            self.mapView.addAnnotations(self.annotations)
            self.activityIndicator.stopAnimating()
        }
    }
}

private func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotation? {
    let reuseId = "pin"
    var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? MKPinAnnotationView
    if pinView == nil {
        pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        pinView!.canShowCallout = true
        pinView!.pinTintColor = .green
        pinView!.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)
    }
    else {
        pinView!.annotation = annotation
    }
    return pinView?.annotation
}

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
    if control == view.rightCalloutAccessoryView {
        if let toOpen = view.annotation?.subtitle {
            openLink(toOpen ?? "")
        }
    }
}

}“

EN

回答 1

Stack Overflow用户

发布于 2021-11-12 09:17:35

它们在MapKit中称为annotations,您应该像这样实例化它们:

代码语言:javascript
复制
let annotation = MKPointAnnotation() 

然后,在viewDidLoad()方法中,只需设置坐标并将其添加到地图中,如下所示:

代码语言:javascript
复制
annotation.coordinate = CLLocationCoordinate2D(latitude: 11.12, longitude: 12.11)
mapView.addAnnotation(annotation)

这些数字就是你的坐标。尝试先在地图上添加样本坐标,然后添加从客户端获得的所有坐标。

您还可以使用以下命令添加更多信息:

代码语言:javascript
复制
annotation.title = "Your text here"
//You can also add a subtitle that displays under the annotation such as
annotation.subtitle = "One day I'll go here..."
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69929160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档