反转 GMSMutablePath 数组



根据文档 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()
}()

相关内容

  • 没有找到相关文章

最新更新