Javascript случайное число между координатами - PullRequest
0 голосов
/ 10 марта 2020

Я хотел бы создать точки между следующими координатами: 52.1462 ,5.8676 - 52.1536 ,5.8376 Здесь нарисован мой прямоугольник.

Я получил следующий код для рандомизации точек между этим прямоугольником:

var x_min = rectangle.getBounds().getEast();
var x_max = rectangle.getBounds().getWest();
var y_min = rectangle.getBounds().getSouth();
var y_max = rectangle.getBounds().getNorth();


var lat = y_min + (Math.random() * (y_max - y_min));
var lng = x_min + (Math.random() * (x_max - x_min));


lngBrd.push([l , b ]); == My starting point. 
lngBrd.push([lng, lat]); == should be random inside the box
lngBrd.push([lng, lat]); == should be random inside the box

Но это дает мне координаты снаружи коробки, см. Рис.

enter image description here

Куда это не так?

Ответ на комментарий

Если я войду:

lngBrd.push([l , b ]); == My starting point. 
lngBrd.push([lng, lat]); == should be random inside the box
lngBrd.push([lng, lat]); == should be random inside the box

Я получаю:

enter image description here

На каждом рефре sh. (Это первое правильно, потому что это моя отправная точка)

1 Ответ

1 голос
/ 10 марта 2020

Я думаю, x_min должно быть rectangle.getBounds().getWest();, а x_max должно быть rectangle.getBounds().getEast(); при условии, что мы находимся в 1-м квадранте декартовой плоскости.

var x_min = rectangle.getBounds().getWest();
var x_max = rectangle.getBounds().getEast();
var y_min = rectangle.getBounds().getSouth();
var y_max = rectangle.getBounds().getNorth();

и поскольку координаты (52.1462 ,5.8676) (52.1536 ,5.8376) может быть полезно сначала умножить значения до 10000, а затем вернуть обратно.

var x_min_int = x_min * 10000;
var x_max_int = x_max * 10000;
var y_min_int = y_min * 10000;
var y_max_int = y_max * 10000;

var lat_int = y_min_int + (Math.random() * (y_max_int - y_min_int));
var lng_int = x_min_int + (Math.random() * (x_max_int - x_min_int));

var lat = lat_int / 10000;
var lng = lng_int / 10000;

Поскольку Math.random() лучше всего работает с целыми числами, правильная рандомизация будет работать в диапазоне прямоугольник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...