2

アイルランド周辺の映画館の場所の約60の地理座標を収集しました。これらをWP7アプリで使用して、現在の場所に最も近い映画館を表示したいと思います。

それらをXMLファイルに保存すると思いましたが、座標のリスト全体を検索して、その中に表示される映画館を表示できるようにするという、私が達成しようとしていることにはうまくいかないと思います(たとえば)彼らの場所の25キロ。

パーツが悪くなりすぎないように、2点間の距離を見つけるのに役立つリンクをいくつか見つけました。

これを達成するために私がどのように取り組むことができるかについてのアイデアはありますか?前もって感謝します

4

3 に答える 3

3

同様のサービスを作成しました。

まず第一に、シェダルも指摘したように、外部サービスで場所をホストすることを検討してください。これにより、場所を追加する必要があるときに、生活がずっと楽になります。(App Hubの更新アプリケーションサービスには最大10日かかる場合があります。これは、間違った場所をすばやく修正する必要がある場合は長い時間です)

次に、場所のリストを読み込んだら、それらをループして最寄りの映画館を見つけるのは簡単です。半正矢関数の式を使用して、2つの地理的位置の間の距離を計算できます(この式は、ピタゴラスの定理とは異なり、地球が平らではなく円形であることを考慮に入れています)。幸いなことに、WPGeoLocationクラスには、GetDistanceTo使用できるという関数が組み込まれています。

問題は、単純なLinqクエリに他なりません。

List<GeoCoordinate> cinemaLocations = new List<GeoCoordinate>();
GeoCoordinate myLocation = new GeoCoordinate();
var closestCinemas = cinemaLocations.OrderBy(s => s.GetDistanceTo(myLocation));
var closestCinema = closestCinemas.FirstOrDefault();
于 2012-04-11T15:59:11.047 に答える
1

映画館のリストは時々更新されるべきではありませんか?もしそうなら、私はどこかでウェブサービスをホストし、あなたのアプリからそれを呼び出して、映画館の最新のリストを入手します。

距離の計算に関しては、それは単にピタゴラスの定理です。

D = sqrt(abs(x2 - x1) + abs(y2 - y1))
于 2012-04-11T15:42:03.043 に答える
0

それらをSQLサーバーに保存します(SQL liteはWP7アプリ内で実行できます)。次に、現在の場所に基づいた値の+/-を使用して、latとlonでクエリを実行します。ここで、0度の軸の近くにあることを必ず補正する必要がありますが、これにより、結果をに減らすための正方形の領域が得られます。これを取得したら、各ポイントまでの距離を探して結果セットを反復処理し、この正方形の隅にある結果をドロップするだけで、定義された最大許容値ですべての方向を見る結果セットを作成できます。もちろん、私はこの正確な問題を解決する必要はありませんでした(私は、このようなものを自動的に(そして本当にうまく)処理するNeo4JSpacialのようなプロジェクトに依存する傾向があります)

于 2012-04-11T15:45:45.310 に答える