0

都市内のさまざまな地域のリストをその地域の天気とともに返すAPIがあります。現在地に基づいて最寄りのエリアを取得したい。

APIは

  • エリア
  • 緯度
  • 経度
  • 天気

このデータに基づいて最も近いエリアを見つける方法は?

4

1 に答える 1

6

すべてのエリアに CLLocation オブジェクトを作成し、ユーザーの現在の場所に 1 つ追加する必要があります。次に、次のようなループを使用して、最も近い場所を取得します。

NSArray *allLocations; // this array contains all CLLocation objects for the locations from the API you use

CLLocation *currentUserLocation;

CLLocation *closestLocation;
CLLocationDistance closestLocationDistance = -1;

for (CLLocation *location in allLocations) {

    if (!closestLocation) {
        closestLocation = location;
        closestLocationDistance = [currentUserLocation distanceFromLocation:location];
        continue;
    }

    CLLocationDistance currentDistance = [currentUserLocation distanceFromLocation:location];

    if (currentDistance < closestLocationDistance) {
        closestLocation = location;
        closestLocationDistance = currentDistance;
    }
}

注意すべきことの 1 つは、距離を計算するこの方法では、ポイント A とポイント B の間の直線を使用することです。道路やその他の地理的オブジェクトは考慮されません。

于 2012-08-19T15:25:38.763 に答える