同様のサービスを作成しました。
まず第一に、シェダルも指摘したように、外部サービスで場所をホストすることを検討してください。これにより、場所を追加する必要があるときに、生活がずっと楽になります。(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();