使用firebase获取数据但UI在模拟器上冻结

时间:2017-05-30 06:33:45

标签: ios swift firebase firebase-realtime-database

我是使用 firebase 的新手,我正在尝试从firebase获取数据。

我从firebase获取驱动程序的纬度和经度,并将它们附加到纬度数组和经度数组中,然后在谷歌地图上创建折线。
当我在模拟器UI上运行代码冻结时,放大和缩小需要时间,但在真实设备上,iPhone 4s,地图无法打开。

我的数据库结构:
enter image description here enter image description here

 func API()
{
    let rootReference = FIRDatabase.database().reference()
    let DriverId = String(Driver_id)
    print("DriverId = \(DriverId)")
    let currentDatePath = rootReference.child("gogoapp_driver/\(DriverId)/\(dateFormatForDriverLocation!)")


    currentDatePath.observeEventType(.Value, withBlock: { snapshot in

        for item in snapshot.children {
            let child = item as! FIRDataSnapshot
            let latitude = child.value!["latitude"] as! String
            let latitudeValue = Double(latitude)
            self.latitudeArray.append(latitudeValue!)

            let longitude = child.value!["longitude"] as! String
            let longitudeValue = Double(longitude)
            self.longitudeArray.append(longitudeValue!)
        }

        self.createPolyline()

    })

}

 func createPolyline()
{
    if latitudeArray.count > 0
    {
        let lastLat = latitudeArray.last
        let lastLong = longitudeArray.last

        let coordinatesForCamera : CLLocation = CLLocation(latitude: lastLat!, longitude: lastLong!)
        let camera = GMSCameraPosition.cameraWithLatitude(lastLat!, longitude: lastLong!, zoom: 12)
        self.googleMapsView.camera = camera
        let path = GMSMutablePath()
        var line = GMSPolyline()
        for( var i = 0; i < latitudeArray.count; i++)
        {
            let currentLocation : CLLocation = CLLocation(latitude: latitudeArray[i], longitude: longitudeArray[i])

            let longitude :CLLocationDegrees = longitudeArray[i]
            let latitude :CLLocationDegrees = latitudeArray[i]
            let c1 = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)

            path.addCoordinate(c1)

            line = GMSPolyline(path: path)

            line.strokeWidth = 5.0
            line.map = googleMapsView

            marker.position = c1
            marker.map = googleMapsView
            marker.title = "\(ChildName)"

        }

        line = GMSPolyline(path: path)
        line.strokeWidth = 5.0
        line.map = googleMapsView

    }

}

0 个答案:

没有答案