私は緯度と経度の値があり、その50マイルで別の緯度経度を探したいと思います。どうやってするか?任意の数式またはカスタム関数は、PHPでそれを取得するには?特定の緯度と経度を基準にして半径50マイルの緯度と経度を取得します
0
A
答えて
1
PHPでは、レコードをフェッチして、以下の式を使用して実行できます。 しかし、この問題を解決するためにクエリを使用したいと思います。より効率的です。
function getNearestUsers($givenLat,$givenLng)
{
$res = [];
$recs = getAllTheRecordsFromDb();
foreach($recs as $r)
{
$distance = sqrt(POW((69.1 * ($r['lat'] - $givenLat)),2) + POW((69.1 * ($givenLng - $r['lng']) * cos($r['lat']/57.3)),2));
if($distance<=50) //50 miles
{
//some code
}
}
}
userId、緯度および経度を持つユーザー表があるとします。以下は、指定された緯度と経度から、半径がのユーザーを50マイルにするSQLクエリです。
SELECT userId, latitude, longitude, SQRT(
POW(69.1 * (latitude - [givenLat]), 2) +
POW(69.1 * ([givenLng] - longitude) * COS(latitude/57.3), 2)) AS distance
FROM TableName HAVING distance < 50 ORDER BY distance;
あなたは以下のリンクを参照からより多くの回答を得ることができる: latitude/longitude find nearest latitude/longitude - complex sql or complex calculation
1
このクエリ方法は、Googleマップ店舗検索APIの基本です。
このウェブサイトをご参照ください:
みましょうあなたは緯度とLANG $ LATの変数を持っていると言います。 $ lng;
これらの変数にはその座標があるものとします。クエリで
は、次の操作を行います。ID、緯度、LNG(3959の* ACOS(COS(ラジアン($ LAT))* COS(ラジアン(LAT))* COS(ラジアン(LNG)
は、SELECT - ラジアン(ラジアン))))AS距離遠方のマーカー距離がある< = 50 ORDER BY距離;
結果は、50マイル以下のid、lat、およびlng座標を返します。
P.S 3959はマイルを返す単位です。
関連する問題
- 1. Laravel緯度と経度の半径
- 2. 緯度/経度マップのサークル半径
- 3. Googleのストリートビューから緯度/経度/緯度/緯度/経度を取得する
- 4. 経度と緯度を取得
- 5. Androidの緯度と経度
- 6. 緯度/経度
- 7. 緯度&経度
- 8. PHPでユーザーのマシンとして経度と緯度を取得
- 9. 緯度/経度とメーター
- 10. デカルトと緯度/経度
- 11. 緯度と経度MVC 4
- 12. マッピング緯度と経度
- 13. 緯度と経度は、R
- 14. 特定の住所とは別に経度と緯度を取得したい
- 15. restfbから緯度、経度を取得
- 16. 緯度経度から国を取得
- 17. jxmapviewer2から緯度経度を取得
- 18. 緯度経度ソート
- 19. topojson /経度+緯度
- 20. 東経度北緯緯度北緯
- 21. javaで北緯と東経に緯度と経度を変換しますか?
- 22. Androidで緯度と経度を取得していない
- 23. 緯度/経度を指定すると、Cの緯度/経度のリストから最も近い緯度/経度のペアが見つかります。
- 24. リーフレットの住所ごとに緯度と経度を取得
- 25. xqlの半径内の他の行のmySQL経度と緯度のクエリ
- 26. フォースクエアのチェックインの緯度と経度を取得するには?
- 27. ウェブサーバーの緯度と経度を表示
- 28. 緯度/経度に基づくTileJSONレイヤースタイル
- 29. 緯度と経度を取得すると常に0,0 uisng GPS
- 30. 緯度経度APIの
という言葉には、 PHPには、そのようなことのための組み込み関数はありません。 – RamRaider