Создать несколько маркеров на карте с базой данных Firestore - PullRequest
0 голосов
/ 05 января 2019

Я хочу показать несколько маркеров на основе запросов по типу на карте Google, и я использую Firestore для хранения своих данных. Я немного растерялся и заблудился, пытаясь создать маркеры с моей базой данных Firestore в Android. Я не знаю, как правильно подключить создание маркера по умолчанию к функции запроса из Firebase.

Я хранил информацию о зелени в Сиднее в четырех типах полей. У меня есть три строки (имя, тип и информация) и один тип геопункта с координатами. Моя структура базы данных выглядит так:

enter image description here

Я нашел учебные пособия, в которых показано, как загружать строковые значения из базы данных Firestore и загружать их в ваше приложение, но я не нашел удобного для начинающих объяснения для загрузки географической информации на карту. Я пытался изменить основной код, чтобы создать маркер для разработчиков Google, но, видимо, из этого ничего не вышло. Так что у меня не так много кода.

private GoogleMap mMap; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference citiesRef = db.collection("sydney_nature");
Query query = citiesRef.whereEqualTo("type", "Park");

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    LatLng sydney = new LatLng(-34, 151);
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in 
    Sydney"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    mMap.animateCamera( CameraUpdateFactory.zoomTo( 10.0f ) );
     }

Я надеюсь создать маркеры, которые при щелчке откроют информационное окно с названием места. В настоящее время я ничего не получаю, потому что не могу выполнить правильный запрос. @ Алекс Мамо мои текущие ошибки: enter image description here

1 Ответ

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

Чтобы отобразить geo под points_au (collction) -> Park (document) на карте, используйте следующие строки кода:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference pointsRef = rootRef.collection("points_au");
DocumentReference parkRef = pointsRef.document("Park");
parkRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                GeoPoint geo = document.getGeoPoint("geo");
                String name = document.getString("name");
                double lat = geo.getLatitude();
                double lng = geo.getLongitude();
                LatLng latLng = new LatLng(lat, lng);
                mMap.addMarker(new MarkerOptions().position(latLng).title(name));
            }
        }
    }
});

В результате будет добавлен маркер на карте с заголовком Royal Botanic Gardens.

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