如何使用Python访问Firestore Geopoint对象的纬度和经度这应该很容易!?

问题描述

我很难从Python中的Firestore Geopoint对象检索纬度和经度。我尝试了多种方法,但是似乎都没有。有什么建议?地理位置对象位于字典中的alertLocation。

代码

docs = db.collection(u'users').where(u'first',u'==',u'MyFirstName').stream()

for doc in docs:
    logger.log_text(f'{doc.id} => {doc.to_dict()}')

输出

HHA5pGRN1rBtGtHRgDS7 => {'alertLocation': <google.cloud.firestore_v1._helpers.GeoPoint object at 0x3e1877599e50>,'first': 'MyFirstName','email': '[email protected]','last': 'mylastname'}

解决方法

使用doc.to_dict()返回该文档的字典;您想要的是访问GeoPoint对象(即,您想要doc.to_dict()['alertLocation'])。纬度和经度作为属性存储在GeoPoint对象上,可通过点符号访问。例如,用f'{doc.id} => {doc.to_dict()['alertLocation'].latitude}'替换格式字符串会给您带来更大的自由度。默认的GeoPoint对象表示形式只为您提供对象ID(在内存中),而不是漂亮的表示纬度和经度的表示形式。

,

显然,我的问题是我尝试使用的记录器功能,而访问geopoint对象中的属性的问题更少。我需要将纬度转换为字符串,以使log_text方法正常工作。

logger.log_text(str(doc.to_dict()["alertLocation"].latitude))