ホームページ >バックエンド開発 >PHPチュートリアル >JavaScript - ユーザーの緯度と経度を取得し、2 つの場所間の距離を計算するにはどうすればよいですか?

JavaScript - ユーザーの緯度と経度を取得し、2 つの場所間の距離を計算するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-09-19 09:16:321434ブラウズ

現在地の緯度と経度を取得するにはどうすればよいですか? 2 つの場所の経度と緯度がわかった後、2 つの場所間の距離を計算するにはどうすればよいでしょうか?
現在、パブリック アカウントで作業しています。ユーザーの緯度と経度を取得し、ユーザーの経度および緯度から別の場所までの距離を計算する必要があります。どうすればこれを達成できますか?助けてください、ありがとう!

返信内容:

現在地の緯度と経度を取得するにはどうすればよいですか? 2 つの場所の経度と緯度がわかった後、2 つの場所間の距離を計算するにはどうすればよいでしょうか?
現在、パブリック アカウントで作業しています。ユーザーの緯度と経度を取得し、ユーザーの経度および緯度から別の場所までの距離を計算する必要があります。どうすればこれを達成できますか?助けてください、ありがとう!

PHPは「近くの人」機能を実装し、IPに基づいて経度と緯度を決定し、経度と緯度に基づいて距離を計算します

PHP は、GeoIP 拡張機能とデータベースをインストールして、IP に基づいて訪問者の国/都市/緯度と経度を取得します。その後、
を使用してユーザーの IP に基づいて緯度と経度を決定できます。geoip_record_by_name($_SERVER['REMOTE_ADDR'])注: 西経と南緯。 geoip_record_by_name() によって返されるのは負の数値です。

5000メートルを緯度と経度に変換すると:

緯度: 1度 = 110852 m
経度: 1度 = 111320*cos(lat) m
同じ経度線上では、1つの緯度の差は約110852メートルです
同じ経度線上では緯度線、経度1つの差 約111320*cos(lat)メートル(latは緯度の緯度)
リーリー

データベース ユーザー テーブルには 2 つのフィールドがあり、それぞれユーザーの経度 lat と緯度 lon を保存します。

($lat-$y) <= lat <= ($lat+$y)
($lon-$x ) < ;= lon <= ($lon+$x)
この範囲は大まかな範囲です。以下の距離を計算して、5 キロメートル以上離れているユーザーを除外してください。

上記でクエリされたユーザーの緯度と経度に従って、

Haversine の公式を使用して、緯度と経度に基づいて 2 点間の距離を計算します。 リーリー
その後、uasort または array_multisort を使用して、最も近いユーザーから遠いユーザーまでリストすることができます。たとえば、win、osx、lin という名前の 3 人のユーザーがいます。 リーリー

Baidu がインターフェースを提供します

GeoIP https://sjolzy.cn/GeoIP-PHP-v...

私が集めた関数を元の投稿者と共有します

直接呼び出すことができます

https://gist.github.com/wujun...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。