Итак, у вас есть эти данные:
["userid": 24xDkrtBV6cJrBvRD3U0PmyBF3o2, "createddatetime": FIRTimestamp: seconds=1546584489 nanoseconds=461000000>, "user_role": sales man, "Latitude": 20.6108261, "longitude": 72.9269003, "batterypercentage": 66, "name": Keyur , "company_code": 001]
Вместо этого вида кода:
for document in snapshot!.documents {
self.location.append(Location(latitude: "\(document.data()["Latitude"] ?? "")", longitute: "\(document.data()["longitude"] ?? "")"))
print(self.location)
guard let long = document.data()["Latitude"] as? String else { return}
guard let lat = document.data()["longitude"] as? String else { return}
let markerStart = GMSMarker(position: CLLocationCoordinate2D(latitude: Double(long) ?? 0.0, longitude: Double(lat) ?? 0.0))
markerStart.map = self.mapView
}
Мы можем улучшить это так,
for document in snapshot!.documents {
self.location.append(Location(latitude: "\(document.data()["Latitude"] ?? "")", longitute: "\(document.data()["longitude"] ?? "")"))
print(self.location)
guard let latitude = document.data()["Latitude"] as? Double,
let longitude = document.data()["Latitude"] as? Double else { return }
let markerStart = GMSMarker(position: CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
markerStart.map = self.mapView
}
Причина, по которой программа не достигает строк 72 73 74, заключается в guard let
.Он не может преобразовать в String
вашу предполагаемую Double
широту и долготу из вашей document.data()
.Сделайте это, как мой код выше, и тогда вы можете улучшить его, как вы хотите.