根据文档 GMSMutablePath 是:
GMSMutablePath is a dynamic (resizable) array of CLLocationCoordinate2D. [Google Documentation]
https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_mutable_path
我想颠倒路径坐标的顺序。通常使用数组我会使用:
[[array123 reverseObjectEnumerator] allObjects];
但是没有一个NSArray函数可以工作,如果我尝试将其转换为NSArray或NSMutableArray,我只会得到危险信号。
如何反转 GMSMutablePath 中元素的顺序,或者如何将其正确转换为 NSArray?
GMSMutablePath
不会继承NSMutableArray
,所以你不能把它转换为NSMutableArray
。 您可以手动执行的操作。如果我们想用NSMutableArray
来做,我们可以调用exchangeObjectAtIndex:withObjectAtIndex:
,但由于GMSMutablePath
似乎没有为该方法提供等效项,我们可以更明确地做到这一点。
for (NSUInteger i1 = 0; i1 < [myPath count]/2; i1 ++)
{
NSUInteger i2 = [myPath count]-i1;
CLLocationCoordinate2D *coord1 = [myPath coordinateAtIndex:i1];
CLLocationCoordinate2D *coord2 = [myPath coordinateAtIndex:i2];
[myPath replaceCoordinateAtIndex:i1 withCoordinate:coord2];
[myPath replaceCoordinateAtIndex:i2 withCoordinate:coord1];
}
如果你想走一条路,然后以同样的方式返回,这就是代码。
lazy var path : GMSMutablePath = {
if let path = GMSMutablePath(fromEncodedPath: self.encodedString) {
let max = path.count()
for i in 0..<max {
let reversePos = max-i // reverte the path so you can go and come back the same way
path.add(path.coordinate(at: reversePos))
}
return path
}
return GMSMutablePath()
}()