私はobjective-cに非常に慣れておらず、答えを見つけるためにいくつかの情報源を試しました。今のところ運がない。私を助けてください。
ロケーション機能を備えたアプリを作成しています。アプリは、指定された距離がカバーされたときにアラートを出す必要があります。したがって、最初の場所を保存する必要があります。移動するときは、実際の位置と距離も表示する必要があります。
私がしたことは次のとおりです。
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
//display latitude
NSString *lat =[[NSString alloc]initWithFormat:@"%f",
newLocation.coordinate.latitude];
latitude.text=lat;
//latr = lat;
//display longitude
NSString *lon = [[NSString alloc]initWithFormat:@"%f",
newLocation.coordinate.longitude];
longitude.text=lon;
//longr = lon;
//display accuracy
//NSString *acc = [[NSString alloc]initWithFormat:@"%f",
// newLocation.horizontalAccuracy];
//accuracy.text=acc;
}
-(void)recordLocation{
double valueLat = [[latitude text]doubleValue];
int latSeconds = valueLat * 3600;
int latDegrees = latSeconds / 3600;
latSeconds = abs(latSeconds % 3600);
int latMinutes = latSeconds / 60;
latSeconds %= 60;
char latChar = (latitude > 0) ? 'N' : 'S';
double valueLon = [[longitude text]doubleValue];
int lonSeconds = valueLon * 3600;
int lonDegrees = lonSeconds / 3600;
lonSeconds = abs(lonSeconds % 3600);
int lonMinutes = lonSeconds / 60;
lonSeconds %= 60;
char lonChar = (longitude > 0) ? 'E' : 'W';
CLLocation *tempPos = [[CLLocation alloc] initWithLatitude:valueLat longitude:valueLon];
NSString *recPosition = [[NSString alloc]initWithFormat:@"%i° %i' %i\" %c" " " @"%i° %i' %i\" %c \n", latDegrees, latMinutes, latSeconds, latChar,lonDegrees, lonMinutes, lonSeconds, lonChar];
_labelDegrees.text = recPosition;
NSLog(@"%f" , valueLat);
NSLog(@"%f" , valueLon);
NSLog (@"%@", tempPos);
[self distanceFromLocation:tempPos];
}
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)tempPos{
double lat1 = [[latitude text] doubleValue];
double lon1 = [[longitude text] doubleValue];
CLLocation *currentLocation = [[CLLocation alloc] initWithLatitude:lat1 longitude:lon1];
CLLocationDistance locDistance = [currentLocation distanceFromLocation:tempPos];
NSString *distText = [[NSString alloc]initWithFormat:@"%f", locDistance];
NSLog(@"%@", currentLocation);
NSLog(@"%f", locDistance);
NSLog(@"%@", distText);
[lonDistance setText:distText];
}
動作しますが、インターフェイスのボタンをクリックすると1回だけです。locDistanceの自動更新はありません。初期位置は自動的に更新され(インターネット上にあります)、この位置の記録も問題ありません。私のコードの何が問題になっていますか。単純な問題である可能性がありますが、解決策を見つけることができません。
(私の貧弱な英語を許してください、私はオランダ語です)
よろしくお願いします
よろしく、
アドリ