Estoy tratando de crear lugares aleatorios cerca de mi ubicación. Lo que quiero es crear pares de latitud/longitud aleatorios dentro de un círculo de 200 metros que rodea mi ubicación.
Esta es la fórmula que se me ocurrió (con la ayuda de la gente de StackOverFlow): (Número aleatorio entre -1 y 1)*radio + (longitud antigua) = nueva longitud dentro del radio de la longitud antigua
(Número aleatorio entre -1 y 1)*radio + (antigua latitud) = nueva latitud dentro del radio de la antigua latitud
El caso es que algo raro está pasando con mi implementación porque todas las localizaciones aleatorias están demasiado cerca de mi centro de localización, parece que la fórmula no cubre todo el radio.
¿Alguna idea de lo que podría estar mal con mi fórmula?
Editado para mostrar la implementación actual de java:
public static Location getLocation(Location location, int radius) {
Random random = new Random();
// Convert radius from meters to degrees
double radiusInDegrees = radius / METERS_IN_DEGREES;
double x0 = location.getLongitude() * 1E6;
double y0 = location.getLatitude() * 1E6;
double u = random.nextInt(1001) / 1000;
double v = random.nextInt(1001) / 1000;
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(y0);
// Set the adjusted location
Location newLocation = new Location("Loc in radius");
newLocation.setLongitude(new_x + x0);
newLocation.setLatitude(y + y0);
return newLocation;
}
No estoy seguro de lo que estoy haciendo mal, porque las nuevas ubicaciones se crean en medio del mar.
¿Alguna idea?