経度と緯度を取り、それを x と y に変換してプロットする関数があります。X と Y への変換は正常に機能していますが、それは私の問題ではありません。
2 つの点が同じ場所にプロットされないようにしたい。結果の 1 つのセットでは、約 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];
}
これは出力です:
それは正しく機能しておらず、正しい方法で問題に取り組んでいるかどうかさえわかりません。
以前にこれをしなければならなかった人はいますか?どのような方法をお勧めしますか?