7

私はグーグルマップのものに不慣れです。緯度と経度を含むすべての場所(スーパーストアの場所)のリストがあるテーブルがあります。

ここで、現在の場所から半径10 km以内にあるこれらのスーパーストアのすべての可能な場所(緯度と経度の可能性があります)を知りたいと思います。

Googleマップ(phpコード)を使用してこれを行う方法がわかりません。どのGoogleマップAPIを使用する必要がありますか?どんな提案、プロジェクトコード、情報も私に役立ちます

前もって感謝します

4

4 に答える 4

16

GoogleマップとMySQLを使用したRadius検索を参照してください

于 2012-10-18T08:57:22.843 に答える
10

次の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
于 2013-10-15T18:35:02.887 に答える
7

https://developers.google.com/maps/articles/phpsqlsearch_v3 上記をご覧ください。あなたに良い考えを与えるべきです。

特定の緯度/経度の特定の半径距離内にあるマーカーテーブル内の場所を見つけるには、Haversine式に基づくSELECTステートメントを使用できます。半正矢関数は、一般に、球上の2組の座標間の大円距離を計算するために使用されます。ウィキペディアでは数学に関する詳細な説明が提供されており、プログラミングに関連する数式については、MovableTypeのサイトで詳しく説明されています。

これは、37、-122座標から半径25マイル以内にある最も近い20の場所を見つけるSQLステートメントです。その行の緯度/経度とターゲットの緯度/経度に基づいて距離を計算し、距離の値が25未満の行のみを要求し、クエリ全体を距離順に並べ替えて、結果を20に制限します。マイルではなくキロメートルで検索するには、3959を6371に置き換えます。

于 2012-10-18T07:53:07.727 に答える
0
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,
  }
}
于 2022-01-16T17:35:05.083 に答える