Я занимаюсь разработкой приложения, которое просто отображает список местоположений на карте, и я создаю GeoFire для того, чтобы при достижении любой области отправлять мне уведомления с музыкой. Проблема здесь, когда я запускаю приложение, я получаю все уведомления о местоположениях одновременно.
Я делаю все внутри цикла, где я называю местоположения
for (final Location location: locationsArea){
mMap.addCircle(new CircleOptions()
.center(location.getLocationPoistion())
.radius(GEOFENCE_RADIUS)
.strokeColor(Color.argb(50, 70, 70, 70))
.fillColor(Color.argb(100, 150, 150, 150))
.strokeWidth(5.0f)
);
mMap.addMarker(new MarkerOptions()
.position(location.getLocationPoistion())
.title(location.getLocationName())
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE))
);
// here when clcik on marker to display the name of marker in alert dialog
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
openAlertDialog(location.getLocationName());
return false;
}
});
// create a GeoQuery when user reach a location in dangerousArea
GeoQuery geoQuery = geofire.queryAtLocation(new GeoLocation(location.getLocationPoistion().latitude,
location.getLocationPoistion().longitude), GEOFENCE_RADIUS);
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onKeyEntered(String key, GeoLocation location) {
Log.d(tag, "onKeyEntered");
sendNotification("Qadomy", String.format("%s entered the location", key));
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onKeyExited(String key) {
Log.d(tag, "onKeyExited");
sendNotification("Qadomy", String.format("%s leaving the location", key));
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
Log.d(tag, "onKeyMoved");
//sendNotification("Qadomy", String.format("%s move within the location", key));
}
@Override
public void onGeoQueryReady() {
Log.d(tag, "onGeoQueryReady");
}
@Override
public void onGeoQueryError(DatabaseError error) {
Log.d(tag, "onGeoQueryError");
Toast.makeText(MapsActivity2.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}