尝试显示从 Firebase 到 MapKit 的位置数据

Posted

技术标签:

【中文标题】尝试显示从 Firebase 到 MapKit 的位置数据【英文标题】:Trying to display location data from Firebase to MapKit 【发布时间】:2018-07-20 18:46:18 【问题描述】:

搜索了很多关于这个问题,但找不到简单的答案。

我希望能够从 Firebase 数据库中读取位置数据并将它们作为注释显示在 MapKit 上。

你能帮忙吗?

现在我可以显示硬编码但不知道如何读取数据库的注释,然后创建一个循环来显示地图上的所有注释。

这是显示注释的代码。 我想用 Firebase 的相关数据填充标题、纬度、经度。 Firebase数据库如下:Firebase Database

**应用程序已与 Firebase 连接!

let points = [
        ["title": ,    "latitude": , "longitude": ],    
    ]
    for point in points 
        let annotation = MKPointAnnotation()
        annotation.title = point["title"] as? String
        annotation.coordinate = CLLocationCoordinate2D(latitude: point["latitude"] as! Double, longitude: point["longitude"] as! Double)
        mapView.addAnnotation(annotation)
    

根据建议我编辑了代码,现在是这样的:

let ref = Database.database().reference()
    ref.child("x-database-alpha/name").observe(.childAdded, with:  (snapshot) in

        let title = (snapshot.value as AnyObject?)!["Title"] as! String?
        let latitude = (snapshot.value as AnyObject?)!["Latitude"] as! String?
        let longitude = (snapshot.value as AnyObject?)!["Longitude"] as! String?

        let annotation = MKPointAnnotation()
        annotation.coordinate = CLLocationCoordinate2D(latitude: (Double(latitude!))!, longitude: (Double(longitude!))!)
        annotation.title = title
        self.mapView.addAnnotation(annotation)
    )

查看Exact Firebase Database

目前代码没有错误,但没有显示注释!

【问题讨论】:

发布你所做的,以帮助你。 @KosukeOgawa 谢谢!我在下面发布了代码。让我知道还有什么需要。 请edit您问题中的代码,而不是将其作为答案发布。 【参考方案1】:

示例代码:

let ref = Database.database().reference()
ref.child("name").observe(.childAdded, with:  (snapshot) in

let title = (snapshot.value as AnyObject!)!["Title"] as! String!
let latitude = (snapshot.value as AnyObject!)!["Latitude"] as! String!
let longitude = (snapshot.value as AnyObject!)!["Longitude"] as! String!

let annotation = MKPointAnnotation()
annotation.coordinate = CLLocationCoordinate2D(latitude: (Double(latitude!))!, longitude: (Double(longitude!))!)
annotation.title = title
self.map.addAnnotation(annotation)
)

【讨论】:

非常感谢!!它给了我这个错误:let title = ... --> Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value 通过更正“名称”来修复错误。但是数据库中的注释没有显示出来。有什么想法吗? 编辑了原帖——请查收!

以上是关于尝试显示从 Firebase 到 MapKit 的位置数据的主要内容,如果未能解决你的问题,请参考以下文章

Iphone MapKit 显示路线

使用 mapKit 的地图显示相反的方向(iOS Swift)

尝试从firebase数据库显示图像到tableview [重复]

UItableview行未在swift4中显示mapkit

如何使用 MapKit 让我的应用放大到我的位置

如何更新显示的 ETA 和距离值? Swift 4 MKDirections MapKit