Я делаю навигационное приложение. В этом приложении я рисую маршрут из точек, выбранных пользователем. У меня есть требование пересчитать маршрут, если пользователь не следит за маршрутом.Проверьте, идет ли пользователь по маршруту или нет (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 метров) .И я могу получить уведомление также
ПРОБЛЕМА: ~ если дорога прямая (более 100mt), то я не могу получить точки на дороге. Для того, чтобы объяснить эту проблему я прилагаю изображение ...
В этом изображении допускают черную линию мой путь (ломаная) и красные круги точки я получил форму для Google API. но в прямом пути, показанном в виде синего круга, я не могу получить точки для сравнения, и на этом пути вызывается функция пересчета.
Может ли кто-нибудь сказать мне решение, из которого я могу получить все точки маршрута, даже если это прямая дорога.
Обычно Google API возвращает поли точек на суставах или, кривые не по прямому пути, это даст начало и конец для прямой путь .. – iphonic
Это проблема iphonic. OP нуждается в промежуточных точках вдоль прямой линии, когда она больше 100 м. –
В этом случае вы можете узнать среднее расстояние между точками, если оно превышает расстояние между точками, поставить местоположение пользователя. – iphonic