我正在研究在地圖上顯示驅動程序的應用程序。我爲此使用了GeoFire。在我的應用程序中,我只需要顯示那些可用的驅動程序。 有關更多信息,請參閱附加圖像。使用GeoFire過濾數據
如果"is_hired":"0" && "driver_available":"true"
,才應司機在地圖上顯示,否則他們從地圖上刪除。
現在,它顯示所有驅動程序,因爲我不知道如何使用其在Firebase上的數據過濾驅動程序。
隨着GeoFire,我需要建立一個不同的節點更新驅動程序的位置,它有它的覆蓋方法:
@Override
public void onKeyEntered(String key, GeoLocation location) {
Log.e("KEY","KEY-->> " + key);
Log.e("Location","Location-->> " + location.latitude+","+location.longitude);
Toast.makeText(HomeActivity.this, "Marker Added", Toast.LENGTH_SHORT).show();
// Add a new marker to the map
Marker marker = this.googleMap.addMarker(new MarkerOptions().position(new LatLng(location.latitude, location.longitude)));
this.driverMarkers.put(key, marker);
}
@Override
public void onKeyExited(String key) {
// Remove any old marker
Toast.makeText(HomeActivity.this, "Marker removed", Toast.LENGTH_SHORT).show();
Marker marker = this.driverMarkers.get(key);
if (marker != null) {
marker.remove();
this.driverMarkers.remove(key);
}
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
// Move the marker
Marker marker = this.driverMarkers.get(key);
if (marker != null) {
this.animateMarkerTo(marker, location.latitude, location.longitude);
}
}
如何過濾誰不僱傭和使用這些標記?
在GeoFire之前,我使用了Firebase數據庫查詢。它的缺點是它正在獲取整個數據庫驅動程序。我只需要顯示附近的司機。 請幫我。
感謝哥們拯救我的一天。它的工作正常,但我有另一個查詢。標記會在添加時得到過濾,如果添加它們,然後在Firebase數據庫中將is_hired更改爲1,那麼我如何獲取該事件?那時驅動程序的位置沒有改變,所以onKeyMoved方法將不起作用。 –
以獲取更新,將'addListenerForSingleValueEvent'更改爲'addValueEventListener' – Wilik