2地点の緯度経度から、距離を返す関数を使っています。
先日、PHPを5から7に変えたら、2,3,4行の3行で
「Warning: A non-numeric value encountered」が出るようになりました。
2行目・$lat_average
3行目・$lat_difference
4行目・$lon_difference
型がちがうらしいという事は調べたのですが、
修正の仕方が分からず困っています。
それと、deg2radの「ラジアン」っていうのが
すみません、よくわからなくて。。。。
アドバイスいただければ助かります。
よろしくお願いします。
php
1 //■2地点間の距離を返す関数 2 //$lat1, $lon1 --- A地点の緯度経度 3 //$lat2, $lon2 --- B地点の緯度経度 4 function location_distance($lat1, $lon1, $lat2, $lon2){ 5 $lat_average = deg2rad( $lat1 + (($lat2 - $lat1) / 2) );//【警告出る】2点の緯度の平均 6 $lat_difference = deg2rad( $lat1 - $lat2 );//【警告出る】2点の緯度差 7 $lon_difference = deg2rad( $lon1 - $lon2 );//【警告出る】2点の経度差 8 $curvature_radius_tmp = 1 - 0.00669438 * pow(sin($lat_average), 2); 9 $meridian_curvature_radius = 6335439.327 / sqrt(pow($curvature_radius_tmp, 3));//子午線曲率半径 10 $prime_vertical_circle_curvature_radius = 6378137 / sqrt($curvature_radius_tmp);//卯酉線曲率半径 11 12 //2点間の距離 13 $distance = pow($meridian_curvature_radius * $lat_difference, 2) + pow($prime_vertical_circle_curvature_radius * cos($lat_average) * $lon_difference, 2); 14 $distance = sqrt($distance); 15 16 $distance_unit = round($distance); 17 if($distance_unit < 1000){//1000m以下ならメートル表記 18 $distance_unit = $distance_unit."m"; 19 }else{//1000m以上ならkm表記 20 $distance_unit = round($distance_unit / 100); 21 $distance_unit = ($distance_unit / 10)."km"; 22 } 23 24 //$hoge['distance']で小数点付きの直線距離を返す(メートル) 25 //$hoge['distance_unit']で整形された直線距離を返す(1000m以下ならメートルで記述 例:836m | 1000m以下は小数点第一位以上の数をkmで記述 例:2.8km) 26 return array("distance" => $distance, "distance_unit" => $distance_unit); 27 //return $distance; 28 } 29
回答1件
あなたの回答
tips
プレビュー