【发布时间】:2019-05-31 13:42:21
【问题描述】:
我想根据在 Google 地图上按类型查询来显示多个标记,并且我正在使用 Firestore 来存储我的数据。尝试在 Android 中使用我的 Firestore 数据库创建标记时,我感到有些困惑和迷失。我不知道如何正确地将默认标记创建连接到 Firebase 的查询功能。
我在四种字段类型中存储了有关悉尼一些绿色植物的信息。我有三个字符串(名称、类型和信息)和一个带有坐标的地理点类型。我的数据库结构如下所示:
我找到了一些教程,这些教程展示了如何从 Firestore 数据库加载字符串值并将它们加载到您的应用程序中,但我没有找到适合初学者在地图上加载地理信息的解释。我试图修改基本代码以在 Google Developers 上创建一个标记,但显然没有任何结果。所以我的代码并不多。
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 ) );
}
我希望创建标记,通过单击打开一个显示地点名称的信息框。目前我什么也得不到,因为我无法执行正确的查询。 @Alex Mamo 我当前的错误:
【问题讨论】:
-
请添加您的数据库结构以查看您如何在文档中存储 GeoPoint。
-
@AlexMamo 谢谢你,我更新了我的帖子!
-
所以基本上你想将
points_au (collction) -> Park (document)下的geo添加到地图中,对吧? -
@Alex Mamo 是的,正确!
-
好的,我给你写一个答案。
标签: java android google-maps google-cloud-firestore