Показать несколько местоположений на Google Maps из Firestore Swift - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь показать местоположения на картах Google. Я получаю longitutde и широту от Firestore.

Я создал структуру, в которой храню широту и долготу

struct Location {

var latitude: String = ""
var longitute: String = ""
}

А вот мой код пожарного магазина, чтобы получить долготу и широту

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
}

Я получаю местоположения в своей консоли, но когда я конвертирую его в Doubles, пытаясь показать его на картах Google, он не работает.Пожалуйста, помогите? enter image description here

 Document Value is ["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]

1 Ответ

0 голосов
/ 21 января 2019

Итак, у вас есть эти данные:

["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().Сделайте это, как мой код выше, и тогда вы можете улучшить его, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...