Я хотел бы генерировать случайные пары широты/долготы внутри круга, окружающего мое местоположение.
В настоящее время я реализовал приемник местоположения, и каждый раз, когда я получаю новое местоположение, я хотел бы нарисовать случайные местоположения рядом со мной.
Я могу вычислить расстояние между двумя уже существующими местоположениями и узнать, находится ли внутри моего диапазона:
public List<Location> filter(Location current, List<Location> locations, int radius) {
List<Location> results = new ArrayList<Location>();
for (Location loc : locations) {
if (current.distanceTo(loc) <= radius) {
results.add(loc);
}
}
return results;
}
Но действительно, я не могу найти, как создавать местоположения внутри моего диапазона.
Любая помощь здесь? Большое вам спасибо.
Как насчет случайного создания координат самостоятельно? Используя текущее местоположение, вы можете установить ограничения на эти числа. Используя текущие координаты и радиус, вы получаете диапазон для случайных чисел. Span for random new X = Старый X + - радиус
Я бы предложил создать случайное число между -1 и 1, а затем умножить его на радиус. Это означает, что максимальное значение для сгенерированной координаты - это радиус (и min is -radius). Добавление этого значения в текущую координату местоположения дает вам значение между старым X + - радиусом. Краткое описание:
(случайное число от -1 до 1) * радиус + (старый x) = новый x в радиусе старого x.
Пример кода для случайного числа (OBS! от 0 до 1):
import java.util.Random;
Random r = new Random();
double zeroToOne = r.nextInt(1001) / 1000
Здесь java-документация по случайному: Random
Кажется, это хорошо. если вы хотите взглянуть: http://android-er.blogspot.com/2011/02/get-list-of-address-from-location-using.html
Я думаю, обычно он работал, но я не мог его настроить на устройстве