识别当前位置路线类型

时间:2015-02-04 10:33:30

标签: objective-c mkmapview cllocation

我正在开展一个项目,我必须区分移动类型(汽车,电车,公共汽车,火车,地铁......)我目前正在使用速度系统来区分大多数,每个都使用最小值和最大值类型(效率不高,你会说:))但是当我想区分汽车和汽车时遇到问题例如地铁 - 它们具有相同的速度(或多或少),但唯一区分它们的是当前是铁路和ROUTE(?)的地方。

想法:使用OpenStreetMap并检查90%的旅程是否在铁路上......

你怎么看?你有没有其他的想法我可能没有想过,以前从未使用过OpenStreetMap,而且它困扰我使用细胞数据...

感谢您的帮助!

编辑(感谢我收到的回复 - 谢谢!): 以下是我提出的建议,如果您有其他想法让它更准确,请告诉我:)

[_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;
            }
         });
     }];

1 个答案:

答案 0 :(得分:0)

您可以使用OSM XAPI从OpenStreetMaps中导出所需的数据。这可能会为您提供可接受的文件大小,以便随应用程序一起提供。

我猜你会在汽车或有轨电车内遇到GPS精度问题。电车路线与汽车之间的距离可能小于您从手机获得的GPS位置的水平精度。

您可以查看用户坐下的位置(即停止行走)。如果这是靠近电车站或用户房子,将给你一个很好的指示。