지도에 드라이버를 표시하는 앱을 만들고 있습니다. 나는 GeoFire를 사용했다. 내 응용 프로그램에서 사용할 수있는 드라이버 만 표시해야합니다. 더 자세한 정보는 첨부 된 이미지를 참조하십시오.GeoFire를 사용하여 데이터를 필터하십시오.
는 "is_hired":"0" && "driver_available":"true"
경우에만 다음 드라이버는 다른 사람들이지도에서 제거,지도에 표시되어야합니다.
지금은 Firebase에서 데이터를 사용하여 드라이버를 필터링하는 방법을 모르기 때문에 모든 드라이버가 표시됩니다. GeoFire와
, 나는 드라이버 위치를 업데이트하기 위해 다른 노드를 작성해야하고 그것의 오버라이드 (override) 방법이 있습니다
@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 데이터베이스 쿼리를 사용하고있었습니다. 단점은 전체 데이터베이스 드라이버를 가져 오는 것이 었습니다. 근처의 운전자 만 표시해야합니다. 도와주세요.
내 하루를 저장해 주셔서 감사합니다. 잘 작동하지만 다른 쿼리가 있습니다. 추가하는 동안 마커가 필터링됩니다. 추가 된 후 is_hired가 Firebase DB에서 1로 변경되면 어떻게 얻을 수 있습니까? 그 시점에서 드라이버의 위치는 변경되지 않으므로 "onKeyMoved"메소드가 작동하지 않습니다. –
업데이트를 받으려면'addListenerForSingleValueEvent'를'addValueEventListener'로 변경하십시오 – Wilik