2015-05-26 2 views
1

Я использую google map sdk для ios, чтобы указать направления между текущим местоположением пользователя и конечным местоположением. Я до сих пор добился того, чтобы нарисовать GMSPolyline между текущим местоположением пользователя и конечным местоположением, используя приведенный ниже код, и он отлично работает.Удалить пройденный сегмент GMSPolyline

GMSPath *encodedPath = [GMSPath pathFromEncodedPath:encodedPathSting]; 
self.polyline = [GMSPolyline polylineWithPath:encodedPath]; 
self.polyline.strokeWidth = 4; 
self.polyline.strokeColor = [UIColor colorWithRed:55.0/255.0 green:160.0/255.0 blue:250.0/255.0 alpha:1.0];; 
self.polyline.map = self.mapView; 

Можно ли удалить часть GMSPolyline, которая была покрыта пользователем через вождения/ходьба? GMSPolyline должна постепенно уменьшаться по длине при прослеживании пути.

Один из способов достижения этой цели состоит в повторном изменении пути, но это неэффективно или неэффективно.

Спасибо.

+0

Я думаю, что нет другого способа, кроме другого, перерисовать путь. Я также нахожу эту вещь –

ответ

2

Так получите LatLng точку полилинии в массиве, как описано here:

//route is the MKRoute in this example 
 
//but the polyline can be any MKPolyline 
 

 
NSUInteger pointCount = route.polyline.pointCount; 
 

 
//allocate a C array to hold this many points/coordinates... 
 
CLLocationCoordinate2D * routeCoordinates = malloc(pointCount * sizeof(CLLocationCoordinate2D)); 
 

 
//get the coordinates (all of them)... 
 
[route.polyline getCoordinates: routeCoordinates 
 
    range: NSMakeRange(0, pointCount) 
 
]; 
 

 
//this part just shows how to use the results... 
 
NSLog(@"route pointCount = %d", pointCount); 
 
for (int c = 0; c < pointCount; c++) { 
 
    NSLog(@"routeCoordinates[%d] = %f, %f", 
 
    c, routeCoordinates[c].latitude, routeCoordinates[c].longitude); 
 
} 
 

 
//free the memory used by the C array when done with it... 
 
free(routeCoordinates);

Затем реализовать цикл, а для первой точки по мере продвижения по пути, как это :

int c = 0; 
 

 
while (pointCount.size() > 0) 
 
{ 
 
    pointCount.get(0).remove(); 
 
}

Примечание: Я не разбираюсь в iOS и не тестировал это решение. Рассматривайте это как предложение, а не исправление. Благодаря!

Надеюсь, это поможет!

Смежные вопросы