Saya ingin membuat titik di antara koordinat berikut : 52.1462 ,5.8676 - 52.1536 ,5.8376 Di sinilah persegi panjang saya digambar.

Saya mendapat kode berikut untuk mengacak titik di antara persegi panjang ini:

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

Tapi itu memberi saya koordinat di luar kotak, lihat file img.

enter image description here

Di mana ini salah?

Balas komentar

Jika saya masuk:

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

Saya mendapat :

enter image description here

Pada setiap penyegaran. (Yang pertama ini benar, karena itulah titik awal saya)

0
P.B 10 Maret 2020, 14:03

1 menjawab

Jawaban Terbaik

Saya pikir x_min seharusnya rectangle.getBounds().getWest(); dan x_max seharusnya rectangle.getBounds().getEast(); dengan asumsi bahwa kita berada di kuadran 1 bidang kartesius.

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

Dan karena koordinatnya adalah (52.1462 ,5.8676) (52.1536 ,5.8376), mungkin berguna untuk mengalikan nilainya terlebih dahulu dengan 10000 lalu kembalikan setelahnya.

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;

Karena Math.random() bekerja paling baik pada bilangan bulat, pengacakan yang tepat akan bekerja pada kisaran persegi panjang

1
catzilla 10 Maret 2020, 11:25