本稿では、実装とPHPクエリの近傍からの距離の例を記載しています。
1 <?PHP 2 // 点周囲の4点を取得 3。 $距離 = 1; // 範囲(単位千メートル) 4。 $ LAT = 113.873643 ; 5 $ LNG = 22.573969 ; 図6は、 DEFINE( 'EARTH_RADIUS'、6371)を; // 土、6371キロの平均半径の半径 7。 $ dlng = 2 * ASIN(SiNから($距離 /(2 * EARTH_RADIUS))/ COS(deg2rad($ 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))* のSiN(deg2rad($ latitude2 +()))COS(deg2rad($ latitude1))* COS(deg2rad($ latitude2))* COS(deg2rad($シータ))); 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?>