Использование данных Firebase и создание маркеров API Карт Google на iOS - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь создать приложение для iOS, работающее с Google Maps API и Firebase. На карте должно быть много маркеров.

Часть карт работает хорошо. Однако я хочу получить данные о местоположении (широта, долгота) из базы данных Firebase в реальном времени, а затем поместить в marker.position . (тогда он должен создать маркер, верно?)

Прошло много дней, я все еще не могу показать маркер (но я могу напечатать правильные данные из базы данных Firebase).

    ref = Database.database().reference()

    ref.child("locations").observeSingleEvent(of: .value) { (snapshot) in
        if snapshot.exists() {
            if let location = snapshot.value as? [String:Any] {
                for eachLocation in location {
                    print("Location: \(eachLocation)")

                    if let locationCoordinate = eachLocation.value as? [String: Any] {
                        if let lavLatitude = locationCoordinate["latitude"] as? Double {
                            if let lavLongitude = locationCoordinate["longitude"] as? Double {

                                print(lavLatitude)
                                print(lavLongitude)

                                let marker = GMSMarker()
                                marker.position = CLLocationCoordinate2DMake(lavLatitude, lavLongitude)
                                marker.map = mapView
                            }
                        }
                    }
                }
            }
        }
    }

Ссылка на мой код от Github: appsmall / Map-Demo .

Это действительно странно, когда я копирую и заменяю свой GoogleService-Info.plist . Мое приложение может показывать маркеры из его базы данных Firebase!

Мне интересно, что в моей базе данных что-то не так: Снимок экрана .

Конечно, я искал и пробовал много разных решений здесь, но все еще не работает, если вам нужна дополнительная информация, пожалуйста, скажите мне, спасибо!

1 Ответ

1 голос
/ 20 марта 2019

Попробуйте использовать аннотацию вместо GMSMarker ():

Замените это

let marker = GMSMarker()
marker.position = CLLocationCoordinate2DMake(lavLatitude, lavLongitude)
marker.map = mapView

На это

let position = CLLocationCoordinate2D(latitude: lavLatitude, longitude: lavLongitude)
let marker = GMSMarker(position: position)
marker.title = "Hello World"
marker.map = mapView
...