可能性の重複:私はこの質問は、おそらく何度も頼まれました知っている
MySQL latitude and Longitude table setup計算距離与えられた2点を、緯度と経度
は、私は多くのことを研究してきたと私は必要特定の事を助けてください。
私はフォームがあり、ユーザーが経度と緯度を入力し、経度と緯度を含むテーブルを持つデータベースがあるとします。半径の15マイル以内のポイントをポイントで検索するにはどうすればよいですか?
可能性の重複:私はこの質問は、おそらく何度も頼まれました知っている
MySQL latitude and Longitude table setup計算距離与えられた2点を、緯度と経度
は、私は多くのことを研究してきたと私は必要特定の事を助けてください。
私はフォームがあり、ユーザーが経度と緯度を入力し、経度と緯度を含むテーブルを持つデータベースがあるとします。半径の15マイル以内のポイントをポイントで検索するにはどうすればよいですか?
2点間の距離を計算する式を使用できます。たとえば :
function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') {
$theta = $longitude1 - $longitude2;
$distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) +
(cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) *
cos(deg2rad($theta)));
$distance = acos($distance);
$distance = rad2deg($distance);
$distance = $distance * 60 * 1.1515;
switch($unit) {
case 'Mi':
break;
case 'Km' :
$distance = $distance * 1.609344;
}
return (round($distance,2));
}
ます。また、何かのように行うことができます。右に「関連」セクションのトップ10のリンクで
$query = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) *
sin((`Latitude`*pi()/180))+cos((".$latitude."*pi()/180)) *
cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)*
pi()/180))))*180/pi())*60*1.1515
) as distance
FROM `MyTable`
HAVING distance >= ".$distance.";
緯度/経度が2ポイントの場合、デルタLatとデルタLonを取得し、これを緯度と経度に沿った距離に変換し、ピタゴラス定理を使用できます。
http://www.movable-type.co.uk/scripts/latlong.htmlのようなページを見ましたか?これには、距離を計算するいくつかの方法があります。だからあなたのポイントのリストを調べるときには、各ポイントから注目ポイントまでの距離を計算し、R < 15マイルを満たすものだけを維持するためにこの公式を使用します。
ルック - > –