У меня есть функция, которая принимает долготу и широту и преобразует ее в x и y для построения графика. Преобразование в X и Y работает нормально, и это не то, с чем у меня проблема.
Я хочу убедиться, что две точки не отображаются в одном месте. В одном наборе результатов около 30 друг над другом (поскольку они имеют одинаковую широту и долготу), это число может быть намного больше.
В данный момент я пытаюсь достичь этого, перемещая точки влево, вправо, вверх или вниз от точки, чтобы сделать квадрат. После того, как квадрат, составленный из точек, нарисован, переходите к следующему ряду и рисуйте еще один квадрат точек вокруг предыдущего квадрата.
Код - Javascript, но он очень общий, поэтому я думаю, что он немного не имеет значения.
Мой код выглядит следующим образом:
var prevLong, prevLat, rand = 1, line = 1, spread = 8, i = 0;
function plot_points(long, lat){
// CODE HERE TO CONVERT long and lat into x and y
// System to not overlap the points
if((prevLat == lat) && (prevLong == long)) {
if(rand==1) {
x += spread*line;
} else if(rand==2) {
x -= spread*line;
} else if(rand==3) {
y += spread*line;
} else if(rand==4) {
y -= spread*line;
} else if(rand==5) {
x += spread*line;
y += spread*line;
} else if(rand==6) {
x -= spread*line;
y -= spread*line;
} else if(rand==7) {
x += spread*line;
y -= spread*line;
} else if(rand==8) {
x -= spread*line;
y += spread*line;
// x = double
} else if(rand==9) {
x += spread*line;
y += spread;
} else if(rand==10) {
x += spread;
y += spread*line;
} else if(rand==11) {
x -= spread*line;
y -= spread;
} else if(rand==12) {
x -= spread;
y -= spread*line;
} else if(rand==13) {
x += spread*line;
y -= spread;
} else if(rand==14) {
x += spread;
y -= spread*line;
} else if(rand==15) {
x += spread*line;
y -= spread;
} else if(rand==16) {
x += spread;
y -= spread*line;
} else if(rand==17) {
x -= spread*line;
y += spread;
} else if(rand==18) {
x -= spread;
y += spread*line;
} else if(rand==19) {
x -= spread*line;
y += spread;
} else if(rand==20) {
x -= spread;
y += spread*line;
}
if(rand == 20) {rand = 1; line++; } else { rand++; }
i++
} else {
line = 1;
i = 0;
}
prevLat = latitude;
prevLong = longitude;
return [x,y];
}
Это вывод:
Это работает неправильно, и я даже не знаю, правильно ли я подхожу к проблеме.
Кто-нибудь должен был делать это раньше? Какой метод вы бы предложили?