Как получить значение Firestore GeoPoint во вложенном объекте? - PullRequest
0 голосов
/ 23 сентября 2019

Вот мой временный код для генерации типа данных геопункта из Firestore DB

firestoreDb.collection("products").document(productId).get()
  .addOnSuccessListener(documentSnapshot -> {
     Products products = documentSnapshot.toObject(Products.class); 
     countryCode = Objects.requireNonNull(products.getAddress().get("countryCode")).toString();

     String stringGeoPoint = products.getLocation().get("geoPoint").toString();
     System.out.println(stringGeoPoint);
     //Output: GeoPoint { latitude=29.339555, longitude=169.715858 }

     GeoPoint geoPoint = documentSnapshot.getGeoPoint(stringGeoPoint);// ?
     //Output: null
  }

Products.class

public class Products{ 
   public Map<String, Object> address;
   public Map<String, Object> location;

   public Map<String, Object> getAddress(){return address;}
   public Map<String, Object> getLocation(){return location;}
}

Моя структура Firestore

enter image description here

  • Продукты
  • -> {productIds}
  • ------> title (String)
  • ------> местоположение (карта)
  • ----------> geoPoint (GeoPoint)
  • ------> адрес (карта)
  • ----------> countryCode (String)

1 Ответ

2 голосов
/ 23 сентября 2019

Вы публикуете два разных кода, и один из них дает вам правильный ответ:

String stringGeoPoint = products.getLocation().get("geoPoint").toString();

, и эта строка кода показывает ноль:

GeoPoint geoPoint = documentSnapshot.getGeoPoint(stringGeoPoint);

Причина:

Причина первого кода работает правильно, потому что при получении данных вы создали модель данных для поля документов.у вас есть метод как getLocation(), который будет возвращать массив Location.Тогда вы обычно можете просмотреть массив hashmap, передав ключ hashmap

Location - это массив Hashmap<String, String>.

Таким образом, 2-й код не будет работать для вас, потому что нет поляпод документом снимок.

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