2016-03-21 18 views
1

私はアンドロイドアプリケーションを設計しています。ユーザーはそこに住所を入力でき、半径300キロ以内のバー/クラブ/飲食店のリストを取得します。google maps apiを使用して大量のデータを扱う

ユーザーのアドレスを入力すると、RESTfulサービス(asp)にコールが送信され、すべてのバー/クラブ/飲食物が選択され、そこからユーザーの所在地までの距離をチェックし、puts配列に300マイルの距離以内にあるものはすべて終了し、終了したらjsonとして結果を返します。

問題は、それがデータベースからすべてのバー/クラブ/ eaterieを選択して、距離を計算する必要があるため、これは本当に遅いです(私はデータの約20kの行を持っている)

プロセス全体の平均応答時間(ユーザーが電話で情報を表示するのをクリックすると)約6〜8秒ですが、約1〜2秒で取得したいと考えています

もっと良い方法がありますか?すべてのレコードを選択して各レコードの距離を確認する必要があるため、問題の原因となっています。

+0

これはあなたのRESTfulなサービスか、 1? –

+1

はい - より現実的な半径を使用してください。なぜあなたは300マイルを使用していますか?誰が夕食のために200マイルを運転しようとしていますか?それ以外のコードを表示する必要があります。しかし、実際の距離を計算している場合(おそらく近似で置き換えることができます)、距離テストのチェックで行うことができる最適化はおそらくあります。 –

+0

@ t.nieseそれは私の安らかなサービスです iv'eできるだけそれを最適化した私が考えることができる他の事は、sqlLiteデータベースにデータを格納し、それを処理するすべてのアンドロイドの位置情報サービス – user2649305

答えて

0

目的地のGPSの場所はありませんか?それでも20kの結果が300mileになった場合、非同期的に半径を広げる場所をレンダリングすることができます。しかし、その真実...なぜ300マイル!もう1つのことは、ドライブではほとんど不可能な道路で300マイルを走っていると思います。ユーザーが地図を一度に移動しないとロードできます。

+0

私は経度と緯度を使用し、差を計算するための数学ベースのアプローチを使用してみましたが、約1:0.70の程度に不正確です。何か100マイル離れたGoogleマップ上では経度と緯度を使って70マイル離れていると思われます。おそらく距離があるかどうかに関わらず距離を計算するだけなので – user2649305

+0

はい、半径はあります。道路上!あなたは今道路から距離を数えていますか? –

関連する問題