我正在制作一个基于导航的应用程序。在这个应用程序中,我正在从用户选择的点绘制路线。如果用户没有遵循路线,我有重新计算路线的要求。检查用户是否遵循路线(iphone)
用于计算我已使用的路线Google direction API
。并绘制我使用此代码的路线
- (void) drawRoute:(NSArray *) path
{
NSInteger numberOfSteps = path.count;
[self.objMapView removeOverlays: self.objMapView.overlays];
CLLocationCoordinate2D coordinates[numberOfSteps];
for (NSInteger index = 0; index < numberOfSteps; index++)
{
CLLocation *location = [path objectAtIndex:index];
CLLocationCoordinate2D coordinate = location.coordinate;
coordinates[index] = coordinate;
}
for(id <MKOverlay> ovr in [self.objMapView overlays])
{
MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:ovr];
if (polylineView.tag == 22)
{
[self.objMapView removeOverlay:ovr];
}
[polylineView release];
}
MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
[self.objMapView addOverlay:polyLine];
}
直到现在,每件事情都是okey。
现在,我希望有一个通知,如果用户外出路线(超过100米)的。而我能得到通知还
问题:〜如果道路是直线道路(超过100吨以上),那么我不能让点在路上。为了说明我重视形象问题......
在此图像中假设黑线是我的路(折线)和红色圆圈是我得到了谷歌的形式的API的点。但在直线路径显示为蓝色的圆形我不能得到点进行比较,并在此路径中重新计算函数被调用。
任何人都可以告诉我解决方案,即使它是直路,我也可以获得所有路线点。
通常谷歌API返回关节或曲线聚点不是直线路径上,它会给起点和终点的直线路径.. – iphonic 2013-03-23 08:29:40
这就是问题所在iphonic。当OP大于100米时需要沿着一条直线的一些中间点。 – 2013-03-23 08:30:39
在这种情况下,您可以找出点之间的距离的平均值,如果它超过任何点之间,放置用户的位置.. – iphonic 2013-03-23 08:42:52