21

こんにちは、住所の近くの自転車ステーションを表示するアプリを書いています。サービスからの各自転車ステーションの緯度と経度の場所のリストがあります。

現在地、またはこれまでの任意の住所をマークできます。現在地の近くにあるすべての自転車ステーションを地図上に表示するにはどうすればよいですか。最初に現在地から最も近い Google の場所を取得してから、データベースにアクセスして自転車の位置を調べ、地図上にマーカーを作成しますか? 最善のアプローチは何ですか?

4

4 に答える 4

27

自転車ステーションの座標が既にあり、このデータが信頼できる場合は、それを使用してマーカーを描画してください。ここで、「近い」の意味を定義する必要があります。

これにはさまざまな解決策があります。マップの境界内にあるすべてのバイク ステーションのマーカーを描画することを選択します (ただし、ズーム レベルによっては多数のマーカーを描画するか、特定のズーム レベルに達する前にスクリプトがマーカーを描画しないようにする必要があります)。または、ある場所 (ユーザーの場所、マップの中心座標など) からnキロメートル以内にマーカーを描画できます。

2 番目の解決策として、バイク ステーションを MySQL データベースに保存している場合は、次のようなクエリを実行できます。

$sql = "SELECT *, ( 6371 * acos( cos( radians(" . $db->real_escape_string($lat) . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $db->real_escape_string($lng) . ") ) + sin( radians(" . $db->real_escape_string($lat) . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table_name HAVING distance < 15";

$lat$lngあなたの中心座標であること

latそしてlngあなたのMySQL列名です

15あなたの座標の周りの半径(km単位)

これは、Haversine 式を使用します。良い情報はここにあります。

これがお役に立てば幸いですが、アプリでデータをどのように整理したかはわかりません。これについてさらにサポートが必要な場合は、さらに情報を提供してください。

于 2013-05-15T11:17:58.430 に答える