Я работаю над проектом, где я должен различать тип мобильности (автомобиль, трамвай, автобус, поезд, метро) ... В настоящее время я использую систему скорости, чтобы отличить большинство из них, используя мин и макс для каждого типа (неэффективно вы скажете :)) Но здесь возникает проблема, когда я хочу отличить автомобиль & метро - они имеют одинаковую скорость (более или менее), но единственное, что их отличает это место, где в настоящее время находятся ЖЕЛЕЗНЫЕ ДОРОГИ и МАРШРУТ (?).Признать текущее местоположение маршрута
идея: с помощью OpenStreetMap и проверить, если 90% пути была на железной дороге или нет ...
Что вы думаете? у вас есть какая-то другая идея, о которой я, возможно, и не думал, никогда раньше не использовал OpenStreetMap, и это мешает мне использовать сотовые данные, хотя ...
Спасибо за помощь!
EDIT (спасибо ответов я получил - спасибо!): Вот что я придумал, если у вас есть другие идеи, чтобы сделать его более точным, дайте мне знать :)
[_motionActivityManager startActivityUpdatesToQueue:[[NSOperationQueue alloc] init] withHandler:^(CMMotionActivity *activity) {
dispatch_async(dispatch_get_main_queue(), ^{
if ([activity stationary] && !isStationnary)
{
isStationnary = TRUE;
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = @"Train station";
request.region = MKCoordinateRegionMakeWithDistance(UIApplication sharedApplication.tracker.lastKnownLocation.coordinate, 500, 500);
MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest:request];
[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
for (MKMapItem *item in response.mapItems) {
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:item.placemark.coordinate radius:50
identifier:@"train station region"];
if ([region containsCoordinate: UIApplication sharedApplication.tracker.lastKnownLocation.coordinate]) {
NSLog(@"IN REGION! %@", item);
}
else {
NSLog(@"NOT IN REGION! %@", item);
}
}
}];
}
else if ([activity walking])
{
isStationnary = FALSE;
}
});
}];