0

モバイル アプリから提供された緯度/経度に最も近い場所を取得するために、harsine クエリを使用しています。

クエリは次のようになります。

SELECT *,(((acos(sin(($latitude *pi()/180)) * sin((`lat`*pi()/180))+cos(($latitude *pi()/180)) * cos((`lat`*pi()/180))* cos((($longitude - `lon`)*pi()/180))))*180/pi())*60*1.1515) AS dist_x 
FROM `work_places`
HAVING dist_x <= '1'
ORDER BY dist_x ASC
LIMIT 10

これはうまく機能しており、取得すべき場所を正確に取得しています。

問題は、dist_x をユーザーが読み取り可能なものに変換することです。現在、dist_x が 0.00996273036944 のように読み取られるとしましょう (floatval と文字列が同じように表示されるため、適切に変換されます)

クエリは 1 マイル以内で検索しているため、これをフィートに変換しようとしているので、dist_x を 5280 で割っています。

       $distance = (float)( $dist_x / 5280 );

返されるのは $distance = 1.88688075179E-6 です

私は何を間違っていますか?

4

2 に答える 2

2

何かが足りないかもしれませんが、マイルをフィートに変換したい場合は、除算する代わりに5280を掛けたくないですか?

于 2012-10-27T00:18:07.727 に答える
2

1 マイルは 5280 フィートなので、

$distance = (float)( $dist_x * 5280 );
于 2012-10-27T00:37:55.977 に答える