Bing または Google マップのいずれかで、ポイントのコレクションを渡し、そのコレクションに問い合わせて、最も近い X ポイントのみをプロットすることができますか?
このデータを事前にフィルター処理するのは難しいかもしれませんが、リスト全体を提供して API 自体でフィルター処理する方がはるかに簡単なためです。
Bing または Google マップのいずれかで、ポイントのコレクションを渡し、そのコレクションに問い合わせて、最も近い X ポイントのみをプロットすることができますか?
このデータを事前にフィルター処理するのは難しいかもしれませんが、リスト全体を提供して API 自体でフィルター処理する方がはるかに簡単なためです。
API は太陽の下ですべての機能を実行するわけではありません。
ただし、Google Maps API を使用して 2 点間の距離を見つけることができることは知っています。APIリファレンスdistanceFromのメソッドを見てください。XML ファイル内のすべてのポイントの距離を計算し、最小の X 数を取得するだけです。
あなたのコメントについて - そうですね、クライアント側で 300 個のアイテムをループするのは少し大変かもしれません。解決策の 1 つは、各ポイントの GPS 座標を XML ファイルに保存し (まだ行っていない場合)、単純な距離計算機を使用してほとんどのポイントを削除する関数を作成することです (自分で調べる必要があります)。次に、残りのポイント (おそらく 30 個) を API に渡して、より正確な距離を計算します。
私は、私が持っていたクライアントの要求に対してこれを行うことを検討しています。私が知る限り、これを行う最善の方法は、住所を入力するときに Google (または同様のもの) を使用して住所をジオコーディングすることです (つまり、住所を緯度と経度に変換します)。
「最寄りを探す」ときは、検索している人の郵便番号を (おそらく) 取得してジオコーディングするか、携帯電話から直接データを取得できる場合は緯度経度を取得する必要があります。デバイス。
固定位置の緯度経度とユーザーの緯度経度を取得したら、harsine 式を使用できると思います(私はこれを言いますが、実際には試していません - 私は数学者ではありません)。球の周りの 2 点間の距離を計算する数学的な方法。地球は完全な球体ではありませんが、この種の目的には十分近いです。
このように、ユーザーの位置を見つけるために外部サービスを 1 回ルックアップするだけで (固定点が作成されたときにジオコーディングし、後で使用できるように保存したと仮定して)、サーバー側でロバ作業を行って計算します。距離。おそらくカスタム SQL 関数を作成して、データベースから順番にプルすることもできます。