从Firebase GeoPoint提取纬度和经度

时间:2020-05-04 09:15:08

标签: firebase flutter dart google-cloud-firestore

在Flutter中工作,我可以像这样访问数据库的各个部分:

Streambuilder(
  stream: Firestore.instance.collection('stores').snapshots(),
  builder: (context, snapshot) {
    if (!snapshot.hasData) return CircularProgressIndicator();
    return ListView.builder(
      itemExtent: 60,
      itemCount: snapshot.data.documents.length,
      itemBuilder: (context, index) =>
         _buildListRows(context, snapshot.data.documents[index]),
    );
  }
),

然后是_buildListRows小部件:

Widget _buildListRows(BuildContext context, DocumentSnapshot document) {
    geoPoint = document.reference.firestore.
    return Container(
      height: MediaQuery.of(context).size.height * 0.7,
      child: ListView(
        children: <Widget>[
          Row(
            children: <Widget>[
              Expanded(
                child: Text(
                  'Business Name',
                  style: Theme
                      .of(context)
                      .textTheme
                      .headline,
                ),
              ),
              Container(
                decoration: const BoxDecoration(
                  color: Colors.teal,
                ),
                padding: const EdgeInsets.all(10),
                child: Text(
                  document['store_name'],
                  style: Theme
                      .of(context)
                      .textTheme
                      .display1,
                ),
              ),
            ],
          ),
          Row(
            children: <Widget>[
              Expanded(
                child: Text(
                  'Location',
                  style: Theme
                      .of(context)
                      .textTheme
                      .headline,
                ),
              ),
              Container(
                decoration: const BoxDecoration(
                  color: Colors.teal,
                ),
                padding: const EdgeInsets.all(10),
                child: Text(
                  document['location'].toString(),
                  style: Theme
                      .of(context)
                      .textTheme
                      .display1,
                ),
              ),
            ],
          ),
        ],
      ),
    );
  }

我才刚刚开始,因此寻找从数据库中按需检索数据并将其显示在应用程序中的最佳方法。我只是找不到任何地方可以解释如何从以下方法返回的GeoPoint参考中提取经度和纬度:document ['location']。toString(),

我从此输出中得到的是:

Instance of 'GeoPoint'

我也正确吗?这是从数据库中提取特定数据的最佳方法吗?感觉我的效率很低,但是找不到其他方法来实现。

1 个答案:

答案 0 :(得分:1)

要访问longitudelatitude,请执行以下操作:

     child: Text(
                  document['location'].latitude.toString(),
                  style: Theme
                      .of(context)
                      .textTheme
                      .display1,
                ),

由于document['location']返回GeoPoint的实例,因此只需调用属性latitude即可获取值。