I am developing an app where it would show "events" that is within a 50 meter radius of the current location of the user. I would get these events from an online database. These events contain a LatLng and an address from the DB.

My question is that what approach would be better?

One approach:

I draw circle on the current location using `addCircle`. Then remove and redraw these circles when the current location changes.

The hard part about this is how would I get the locations or lat/lang within 50 meters.

I would then query my DB and return my events.

Another approach I've considered is Geofences. I am still studying it right now.

Maybe I would draw a geofence around my current location and update it as needed.

You need a function called

``````InRadius(centerX, centerY, radius, x, y)
{
Return (radius * 111000f) >= sqrt((x-centerX )^2 +(y-centerY) ^2)
}
``````

Center is user location. But you must call on every record in event table, feeding the lat into y and the long into x

``````public static LatLng getLocation(double lon, double lat, int radius)
{
Random random = new Random();

// Convert radius from meters to degrees

double u = random.nextDouble();
double v = random.nextDouble();
double w = radiusInDegrees * Math.sqrt(u);
double t = 2 * Math.PI * v;
double x = w * Math.cos(t);
double y = w * Math.sin(t);

// Adjust the x-coordinate for the shrinking of the east-west distances
double new_x = x / Math.cos(lat);

double foundLongitude = new_x + lon;
double foundLatitude = y + lat;
System.out.println("Longitude: " + foundLongitude + "  Latitude: "
+ foundLatitude);

return new LatLng(foundLatitude, foundLongitude);

}
``````

Then call function where you want. :)

``````private LatLng latlon1;

latlon1 = getLocation(location.getLongitude(),location.getLatitude(),50);
``````

->location = your current location
->50 = radius what ever you want to give