私はグーグルマップのものに不慣れです。緯度と経度を含むすべての場所(スーパーストアの場所)のリストがあるテーブルがあります。
ここで、現在の場所から半径10 km以内にあるこれらのスーパーストアのすべての可能な場所(緯度と経度の可能性があります)を知りたいと思います。
Googleマップ(phpコード)を使用してこれを行う方法がわかりません。どのGoogleマップAPIを使用する必要がありますか?どんな提案、プロジェクトコード、情報も私に役立ちます
前もって感謝します
私はグーグルマップのものに不慣れです。緯度と経度を含むすべての場所(スーパーストアの場所)のリストがあるテーブルがあります。
ここで、現在の場所から半径10 km以内にあるこれらのスーパーストアのすべての可能な場所(緯度と経度の可能性があります)を知りたいと思います。
Googleマップ(phpコード)を使用してこれを行う方法がわかりません。どのGoogleマップAPIを使用する必要がありますか?どんな提案、プロジェクトコード、情報も私に役立ちます
前もって感謝します
GoogleマップとMySQLを使用したRadius検索を参照してください
次のMysqlのクエリを使用して、指定したマイル内のすべてのストアを取得できます
select * from stores where lat!='' and lng!='' and ( 3959 * acos( cos( radians(" . $centerpoints['lat'] . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $centerpoints['lng'] . ") ) + sin( radians(" . $centerpoints['lat'] . ") ) * sin( radians( lat ) ) ) ) < " . $distanceInMile
https://developers.google.com/maps/articles/phpsqlsearch_v3 上記をご覧ください。あなたに良い考えを与えるべきです。
特定の緯度/経度の特定の半径距離内にあるマーカーテーブル内の場所を見つけるには、Haversine式に基づくSELECTステートメントを使用できます。半正矢関数は、一般に、球上の2組の座標間の大円距離を計算するために使用されます。ウィキペディアでは数学に関する詳細な説明が提供されており、プログラミングに関連する数式については、MovableTypeのサイトで詳しく説明されています。
これは、37、-122座標から半径25マイル以内にある最も近い20の場所を見つけるSQLステートメントです。その行の緯度/経度とターゲットの緯度/経度に基づいて距離を計算し、距離の値が25未満の行のみを要求し、クエリ全体を距離順に並べ替えて、結果を20に制限します。マイルではなくキロメートルで検索するには、3959を6371に置き換えます。
function getLatLong(lat, lng, radius) {
const earth = 6371 // earth radius in miles
const maxLat = ((lat + Math.PI / 2) * 180) / Math.PI
const minLat = ((lat - Math.PI / 2) * 180) / Math.PI
const maxLng = ((lng + (Math.PI * radius) / earth) * 180) / Math.PI
const minLng = ((lng - (Math.PI * radius) / earth) * 180) / Math.PI
return {
maxLat: maxLat,
minLat: minLat,
maxLng: maxLng,
minLng: minLng,
}
}