我正在制作一款基于导航的应用程序。在这个应用程序中,我根据用户选择的点绘制路径。如果用户没有按路径行驶,我需要重新计算路径。
为了计算路径,我使用了谷歌方向 API。为了绘制路径,我使用了以下代码:
到目前为止一切都好。
现在,如果用户超出路线(超过100米),我想要收到通知,并且我也可以获得通知。
问题是:如果道路是直的(超过100米),那么我无法在道路上获取点。为了解释这个问题,我附上了图片...
在这张图片中,假设黑线是我的路径(折线),红色圆圈是我从谷歌API中获得的点。但在蓝色圆圈所示的直线路径上,我无法获取要比较的点,并且在此路径上调用重新计算函数。
有人能告诉我如何获得路线上的所有点,即使它是一条笔直的道路吗?
为了计算路径,我使用了谷歌方向 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];
}
到目前为止一切都好。
现在,如果用户超出路线(超过100米),我想要收到通知,并且我也可以获得通知。
问题是:如果道路是直的(超过100米),那么我无法在道路上获取点。为了解释这个问题,我附上了图片...
在这张图片中,假设黑线是我的路径(折线),红色圆圈是我从谷歌API中获得的点。但在蓝色圆圈所示的直线路径上,我无法获取要比较的点,并且在此路径上调用重新计算函数。
有人能告诉我如何获得路线上的所有点,即使它是一条笔直的道路吗?