Php 在给定的纬度和经度下,如何对附近最近的位置进行分组?

Php 在给定的纬度和经度下,如何对附近最近的位置进行分组?,php,mapping,latitude-longitude,logarithm,Php,Mapping,Latitude Longitude,Logarithm,想象一下,我有一个位置数组,每个项目包括该位置的名称、纬度和长度。现在我想使用半径(以英里为单位)对附近的项目进行分组 如何在PHP中实现这一点?您需要第二个数组来存储数据。和你的位置阵列的副本 for each $place in $places_array do store $place in $store_array for each $place2 in $places2_array do if $place2 == $place continu

想象一下,我有一个位置数组,每个项目包括该位置的名称、纬度和长度。现在我想使用半径(以英里为单位)对附近的项目进行分组


如何在PHP中实现这一点?

您需要第二个数组来存储数据。和你的位置阵列的副本

for each $place in $places_array do
   store $place in $store_array
   for each $place2 in $places2_array do
      if $place2 == $place
         continue
      else
         if compare_radius() == true
             store $place2 in $store_array
         end_if
      end_else
   end_for
   erase each new data in store from $places2_array  (Only if you do not want to replicate data)
end_for
瓦尔斯

  • $store_数组:新数组,所有位置按邻近性分组。它的结构可以是[0]->[place_1][place_2],[1]->[place_1]等
  • $places\u array:您的数据数组
  • $places2\u数组:与$places\u数组重复

我知道这不是一个有效的算法,但它确实有效。如果您有很多数据,可能最好使用另一种算法。

您需要第二个数组来存储数据。和你的位置阵列的副本

for each $place in $places_array do
   store $place in $store_array
   for each $place2 in $places2_array do
      if $place2 == $place
         continue
      else
         if compare_radius() == true
             store $place2 in $store_array
         end_if
      end_else
   end_for
   erase each new data in store from $places2_array  (Only if you do not want to replicate data)
end_for
瓦尔斯

  • $store_数组:新数组,所有位置按邻近性分组。它的结构可以是[0]->[place_1][place_2],[1]->[place_1]等
  • $places\u array:您的数据数组
  • $places2\u数组:与$places\u数组重复

我知道这不是一个有效的算法,但它确实有效。如果你有很多数据,也许最好使用另一种算法。

你需要更好地定义你的问题。您希望您的团队看起来像什么?“这群人中的所有人都在2英里以内”?每个位置是否只能属于一个组、两个组或多个组?每个位置都必须属于一个组吗?我们如何确定截止距离?你需要更好地定义你的问题。您希望您的团队看起来像什么?“这群人中的所有人都在2英里以内”?每个位置是否只能属于一个组、两个组或多个组?每个位置都必须属于一个组吗?我们如何确定截止距离?