删除旅行的GMSPolyline细分

时间:2015-05-26 12:45:58

标签: ios objective-c iphone google-maps

我正在使用Google地图sdk for ios来提供当前用户位置和结束位置之间的路线。到目前为止,我已经实现了使用下面的代码在当前用户位置和结束位置之间绘制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的长度必须逐渐减小。

实现这一目标的一种方法是重复重绘路径,但这不是或者效率不高。

感谢。

1 个答案:

答案 0 :(得分:2)

因此,如here所描述的那样,将折线的latlng点放在数组中:



//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);
&#13;
&#13;
&#13;

然后,当您沿着这样的路径移动时,为第一个点实现while循环:

&#13;
&#13;
int c = 0;

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

注意:我没有iOS经验,也没有对此解决方案进行过测试。将其视为建议而不是修复。谢谢!

希望它有所帮助!