私は、次の3つの手順でこの問題を解決しようとするだろう。
// in viewDidLoad
locManager = [[CLLocationManager alloc] init];
[locManager setDelegate:self];
[locManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locManager startPdatingLocation];
self.userCoordinatePoints = [NSMutableArray alloc]init];
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
CLLocationCoordinate2D loc = [newLocation coordinate];
CGPoint *currentPoint = [self.mapView convertCoordinate:loc toPointToView:self.mapView];
// add points to array
self.userCoordinatePoints addObject:currentpoint];
}
ステップ2。
- (MKOverlayView*)mapView:(MKMapView*)theMapView
viewForOverlay:(id <MKOverlay>)overlay
{
MKPolylineView *overlayView = [[MKPolylineView alloc]
initWithOverlay:overlay];
overlayView.lineWidth = 3;
overlayView.strokeColor = [[UIColor blueColor]colorWithAlphaComponent:0.5f];
// overlayView.fillColor = [[UIColor purpleColor] colorWithAlphaComponent:0.1f];
path = overlayView.path;
return overlayView;
}
ステップ3:CGPathRef
にMKPolylineView
に変換すると、2点間のルートを作成するために実装している必要がありますCGPathRef
{
CGPathRef path;
}
このメソッドの型のクラス変数を作成して確認するためにカスタムメソッドを作成します。ポイントがCGPathにあるかどうか
- (BOOL)userRouteIntersectsGoogleRoute
{
// Loop through all CGPoints
for(CGPoint point in self.userCoordinatePoints)
{
BOOL val = CGPathContainsPoint(path, NULL, point);
if(val)
{
return YES;
}
}
return NO;
}
あなたはユーザーのクロスワードその行に実際の位置情報サービスが表示されているか、またはユーザーに経路を知らせて、これらの経路のルートが特定の行を通過しているかどうかを調べようとしていますか? –
@TimBodeitユーザーが行を横切っているかどうかを調べたい(たとえば、フィニッシングラインを通過した場合) – ghostrider