0

ユーザーの近くにある結果をクエリするWebアプリがあります。アプリの動作方法により、ユーザーは4つのポイントで囲まれた正方形に配置されます。2つは左下隅、2つは右上隅(latsw、latne、longsw、longne)です。ユーザーを正方形の中心に保ちながら、「正方形」のサイズを大きくする必要があります。私は次のような基本的なものを試してきました:

$latsw= $latsw - $increasing_factor;
$latne= $latne + $increasing_factor;
$longsw=$longsw - $increasing_factor;
$longne=$longne + $increasing_factor;

$latsw= $latsw / $increasing_factor;
$latne= $latne * $increasing_factor;
$longsw=$longsw / $increasing_factor;
$longne=$longne * $increasing_factor;

しかし、結果は私にシフトした領域または他の奇妙な振る舞いを与えているだけです。これは、GPS座標が2D平面で実際に線形に動作しないためだと思います。比較的シンプルに保ちながら、このようなことをするためのアイデアはありますか?

4

1 に答える 1

1

あなたはこのようなことを試すことができます:

同じ中心経度/緯度を維持したいので、最初にそれを計算します(すでに持っている2つの経度と2つの緯度を平均することによって):

center_long = (ne_long + sw_long)/2
center_lat = (ne_lat + sw_lat)/2

次に、2つの経度と2つの緯度を差分してバウンディングボックスのサイズを計算し、delta_long、delta_latを取得します。

delta_long = ne_long - sw_long
delta_lat = ne_lat - sw_lat

いくつかの係数を掛けてdelta_longとdelta_latを調整します(たとえば、50%の増加の場合は1.5)。

new_delta_long = delta_long * increasing_factor
new_delta_lat = delta_lat * increasing_factor

最後に、新しい境界点を計算します。

new_corner_long = center_long +/- new_delta_long
new_corner_lat = center_lat +/- new_delta_lat

極、赤道、または本初子午線に近すぎない限り(厄介な範囲/符号の問題を回避するため)、または大きすぎる境界ボックスを使用しない限り(2次元平面の動作からの厄介な逸脱を回避するため)、これは必要です。あなたが探しているものの球場にあなたを連れて行ってください。

于 2012-10-22T23:46:53.483 に答える