実装とPHPクエリの近傍からの距離

本稿では、実装とPHPクエリの近傍からの距離の例を記載しています。

1 <?PHP
 2  // 点周囲の4点を取得
3。 $距離 = 1; // 範囲(単位千メートル)
4。 $ LAT = 113.873643 ;
 5  $ LNG = 22.573969 ;
 図6は、 DEFINE( 'EARTH_RADIUS'、6371)を; // 土、6371キロの平均半径の半径
7。 $ dlng = 2 * ASINSiNから$距離 /(2 * EARTH_RADIUS))/ COSdeg2rad$ LAT )));
 8  $ dlng = rad2deg$ dlng )。
 9 $ DLAT = $距離 / EARTH_RADIUS。
10  $ DLAT = rad2deg$ DLAT )。
11の $の二乗 = 配列( '左上' => アレイ( 'LAT' => $ LAT + $ DLAT、 'LNG' => $ LNG - $ dlng)、
 12      '右上' => アレイ(「LAT '=> $ LAT + $ DLAT、 'LNG'=> $ LNG + $ dlng)、
 13      '左下'=> アレイ(' LAT」=>$ DLAT、 'LNG' => $ LNG - $ dlng)、
 14      '右下' => アレイ( 'LAT' => $ LAT - $ DLAT、 'LNG' => $ LNG + $ dlng 15  )。
16  ますprint_r$正方形 [ '左上'] [ 'LAT' ])。
17  // 从数库查询匹配的记录
18  $ info_sql =「'A` LAT <> 0とLAT> SELECT * FROM { $正方形 [ '右下'] [ 'LAT']}と{<LAT $正方形 [ '左上'] [ 'LAT']}とLNG>[ '右下'] [ 'LNG']} " ;
 19  // 点間の距離を受ける
20である 関数 getDistanceBetweenPointsNew($ latitude1$ longitude1$ latitude2$ longitude2 21は 、{
 22は     $シータ = $ longitude1 - longitude2 $ ;
 23は、     $マイル =(SiNからdeg2rad$ latitude1))* のSiNdeg2rad$ latitude2 +()))COSdeg2rad$ latitude1))* COSdeg2rad$ latitude2))* COSdeg2rad$シータ)));
24      $マイル = ACOS$マイル);
25      $マイル = rad2deg$マイル);
26      $マイル = $マイル * 60 * 1.1515 ;
27      $足 = $マイル * 5280 ;
28      $ヤード = $フィート / 3 29      $キロ = $マイル* 1.609344 ;
30      $メートル = $キロ ×1000 ;
31      リターン・ コンパクト( 'マイル'、 '足'、 'ヤード'、 'キロ'、 'メートル' );
32  }
 33  
34  $ POINT1 = 配列( 'LAT' => 40.770623、 '長い' => -73.964367 )。
35  $ポイント2 = 配列( 'LAT' => 40.758224、 '長い' => -73.917404 )。
36  $距離 = getDistanceBetweenPointsNew($ POINT1 [ 'LAT']、$ POINT1 [ '長い']、$ポイント2 [」]);
37  foreachの$距離 として $単位 => $値{)
 38      エコー $ユニット':'。number_format$値、4)。'<br />' ;
39  }
 40?>

 

リンク:https://www.php.cn/php-weizijiaocheng-316.html

おすすめ

転載: www.cnblogs.com/clubs/p/11873949.html
おすすめ