-1

現在、Google Maps APIを使用して1つの場所(店舗)と他の場所のリスト(技術)の間の距離を取得するウェブアプリがあります。すべてDBにキャッシュされているため、実行する必要があるのは1回だけです。しかし、その最初は非常に遅い....

今やらなければならないのは、顧客のフロントエンドを作成して、住所を入力して最寄りの店舗を見つけることです。店舗の雰囲気があるため、Google Maps APIを使用して各店舗の住所を取得し、それを顧客の住所と比較しようとすると、永遠に時間がかかります。

では、これを高速化するために利用できる手法は何でしょうか。latとlongの違いでほとんどのアドレスを除外することは可能ですか?または、アドレスの長いリストを使用してGoogleマップに提供し、最も近いアドレスを返すことができるAPIメソッドですか?

4

2 に答える 2

3

あなたがすることになっているのは、データベースにストアを追加するときに、それらのlat/lngsも含めることです。このように、ユーザーが住所を入力するときは、住所をジオコーディングし(lat / lngを取得)、haversine式(数学であるため高速に実行されます)を使用して最も近い場所を取得する必要があります。

https://developers.google.com/maps/articles/phpsqlsearch_v3

google geocoding apiを使用して、データベースにすでに存在するストアのlat/lngを取得/挿入できます。

私は現在、数万の店舗を検索するロケーターを持っており、この方法を使用して1秒以内に実行されます。

于 2012-08-18T03:18:19.477 に答える
1

残念ながら、Google Maps APIにはそのような関数はなく、自分で実装する必要があります。良いスタートは、場所の地理的場所と空間インデックスを保存するためのmysqlポイントデータ型です。空間インデックスは、次元の複雑さを軽減し、最近傍探索を簡単にします。空間インデックスは、rツリーと空間充填曲線(ヒルベルト曲線など)です。ヒルベルト曲線に関する優れた記事は次のとおりです。http : //blog.notdot.net/2009/11/Damn-Cool-Algorithms-Spatial-indexing-with-Quadtrees-and-Hilbert-Curves 。mysqlを使用した空間インデックスの例を次に示します。mysqlテーブルの空間インデックスを使用して最も近い地理座標を選択すると機能しません。これがmysql距離関数の例ですMySqlの空間関数を使用して2つの座標間の距離を見つける正しい方法。MySql5.1http://www.elevatedcode.com/articles/2009/03/06/speeding-up-location-based-searches/の例を次に示します

于 2012-08-18T03:11:46.053 に答える