Маркер из карты данных Firestore - PullRequest
0 голосов
/ 01 июля 2019

в Firestore У меня есть тип данных карты с именем latlng, который имеет широту и долготу позиции. Я хотел бы использовать эту информацию в Android для позиции маркера. Я инстинктивно думал, что использовать этот код, но это неправильно, потому что он ожидает (double, double) вместо (Object).

MarkerOptions options = new MarkerOptions().position(new LatLng(document.get("latlng")))

EDIT

Учтите, что поле Firebase относится к типу данных Map , поскольку оно автоматически импортируется таким образом из API Google Place.

enter image description here

Ответы [ 3 ]

1 голос
/ 01 июля 2019

Попробуйте, это точно подойдет вам.

db.collection("latlng")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            HashMap hashmap = (HashMap) document.getData();
                            GeoPoint geopoint = new GeoPoint(hashmap.get("latitude"), hashmap.get("longitude"));
                            MarkerOptions options = new MarkerOptions().position(new LatLng(geopoint.getLatitude(), geopoint.getLongitude()));
                        }
                    } else {
                        // handle your errors here
                    }
                }
            });

По сути, кодовая база выше запрашивает Firestore в узле latlng и получает все геопоинты в этом месте. Затем он продолжает отображать маркер для каждой из координат. Я действительно надеюсь, что это поможет.

ДОПОЛНЕНИЕ

Существует более простой способ хранить и извлекать значения местоположения из FirebaseDatabase. Вы можете легко сохранять и извлекать данные, используя GeoFire . Прочитайте ReadMe из официального репозитория , чтобы лучше понять.

Надеюсь, это поможет. Веселого кодирования!

1 голос
/ 01 июля 2019

Если вы видите документацию здесь: LatLng

Единственный доступный общедоступный конструктор: LatLng(double latitude, double longitude)

Редактировать:

Создать новый класс для анализа ссылки.

public class MyLatLng {
    public Double latitude;
    public Double longitude;
 public MyLatLng(Double latitude, Double longitude) {
   this.latitude = latitude;
   this.longitude = longitude;
 }     
}

создать новую переменную в вашем ссылочном классе для анализа LatLng

public MyLatLng latlng;

Сейчас

MarkerOptions options = new MarkerOptions().position(new LatLng(document.latitude, document.longitude));
0 голосов
/ 01 июля 2019

Использование

import com.google.firebase.firestore.GeoPoint;

И поместите значения в тип

GeoPoint geopoint;

А затем возьмите лат и длинный оттуда.

...