根据文档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
我想颠倒Path坐标的顺序。通常使用数组我会使用:
[[array123 reverseObjectEnumerator] allObjects];
但NSArray函数都不会对它起作用,如果我尝试将它强制转换为NSArray或NSMutableArray,我只会得到红旗。
如何反转GMSMutablePath中元素的顺序或如何将其正确地转换为NSArray?
答案 0 :(得分:2)
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];
}
答案 1 :(得分:0)
这是代码,如果你想走一条路并以同样的方式回来。
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()
}()