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

你可以尝试这样的事情:

你想保持相同的中心经度/纬度,所以首先计算(通过平均你已经拥有的两个经度和两个纬度):

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

然后通过将两个经度和两个纬度进行差分来计算边界框的大小,得到delta_long,delta_lat。

delta_long = ne_long - sw_long
delta_lat = ne_lat - sw_lat

通过乘以某个因子来调整 delta_long 和 delta_lat(例如,1.5 增加 50%):

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

只要您不太靠近两极、赤道或本初子午线(以避免尴尬的范围/符号问题),或者不使用太大的边界框(以避免与二维平面行为的尴尬偏差),这应该让您大致了解您正在寻找的东西。

于 2012-10-22T23:46:53.483 回答