我想基于Google地图上的类型查询显示多个标记,并且我正在使用Firestore存储数据。我有点困惑并且迷失了尝试在Android中使用Firestore数据库创建标记的方法。我不知道如何将默认标记创建正确地连接到Firebase的查询功能。
我在四个字段类型中存储了有关悉尼一些绿色植物的信息。我有三个字符串(名称,类型和信息)和一个带有坐标的geopoint类型。我的数据库结构如下:
我找到了一些教程,这些教程显示了如何从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我当前的错误:
答案 0 :(得分:1)
要在地图上with open(input_path, "r") as input_fd, open("out.out", "w") as output_fd:
temp = subprocess.call([exe_path], stdin=input_fd, stdout=output_fd)
下显示geo
,请使用以下代码行:
points_au (collction) -> Park (document)
结果将是在地图上添加标题为FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference pointsRef = rootRef.collection("points_au");
DocumentReference parkRef = pointsRef.document("Park");
parkRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
GeoPoint geo = document.getGeoPoint("geo");
String name = document.getString("name");
double lat = geo.getLatitude();
double lng = geo.getLongitude();
LatLng latLng = new LatLng(lat, lng);
mMap.addMarker(new MarkerOptions().position(latLng).title(name));
}
}
}
});
的标记。