0

私は1つのアプリケーション名時間トラッカーで作業しました。ユーザーは手動でスワイプインし、ボタンをクリックして手動でスワイプできます。iosの場所に基づいてログインしてログアウトする

ここでは、位置検出に基づいて自動化したいと考えています。そのために私はCLLocationManagerクラスを使用しています。時にはうまく動作し、ときどき間違ったスワイプの詳細が表示されます。私は以下のコードを使用しています。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) 
     [locationManager requestWhenInUseAuthorization]; 

     [locationManager startUpdatingLocation]; 

}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 

    _latitude.text = [NSString stringWithFormat:@"Latitude: %f", newLocation.coordinate.latitude]; 
    _longitude.text = [NSString stringWithFormat:@"Longitude: %f", newLocation.coordinate.longitude]; 

    if([_latitude.text doubleValue] > 17.76890) && [_longitude.text doubleValue] > 78.34567) { 

     if (isSwipeIn) { 
      isSwipeIn = false; 
      //necessary swipe out UI and logic 
     } else { 
      isSwipeIn = true; 
      //necessary swipe in UI and logic 
     } 
    } 
} 

誰もがこの上で私を助けることができます。これを行うには別の方法があります

答えて

0

、あなたがターゲットの場所からの距離を取得し、現在の場所のhorizontalAccuracyでそれを確認することができます。

deltaには、現在地と目的地の距離が表示されます。 deltaが(<)未満の場合、現在の位置よりもhorizontalAccuracyは、半径がhorizontalAccuracyの円になります。

deltaが(>)horizontalAccuracyより大きい場合は、現在地がターゲット地域よりも大きく離れています。

だから今CLLocationManagerデリゲートメソッドは、以下のように見えるようになります。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 

    _latitude.text = [NSString stringWithFormat:@"Latitude: %f", newLocation.coordinate.latitude]; 
    _longitude.text = [NSString stringWithFormat:@"Longitude: %f", newLocation.coordinate.longitude]; 

    // Create Location object for your target location. e.g. (17.76890,78.34567) 
    CLLocation *targetLocation = [[CLLocation alloc] initWithLatitude:17.76890 longitude:78.34567]; 
    CLLocationDistance delta = [newLocation distanceFromLocation:targetLocation]; 

    if (delta > newLocation.horizontalAccuracy) { 
     if (isSwipeIn) { 
      isSwipeIn = false; 
      //necessary swipe out UI and logic 
     } else { 
      isSwipeIn = true; 
      //necessary swipe in UI and logic 
     } 
    } 
} 
1

代わりにLAT-長い比較のため、お使いのデバイスは、そうでない場合はアウトスワイプでスワイプなど、いくつかのメーターマーク内にある場合のような範囲チェックのために行きます。

あなたは、私は、これはあなたを助けることを願っていますLAT-長期のObjective-C

CLLocation *location; // Your Location to compare 
CLLocation *currentLocation; // Your current location 
double distance = [location distanceFromLocation:currentLocation]; // Returns distance in meters 

// Now lets say you are within 5 meters mark Swipe In 

if(distance <= 5) 
    // Mark swipe IN 
else 
    // Mark swipe OUT 

に以下の方法を使用して、2つの間の距離を確認することができます。ハッピーコーディング:)

関連する問題