纬度和经度点从MKPolyline

我试图找出一种方法来获取在iOS应用程序上的MKMapView上绘制MKPolyline的所有经度和纬度点。

我知道MKPolyline不存储纬度和经度点,但我正在寻找一种方法来build立一个经纬度数组,并且MKPolyline会在地图上触摸。

有人有这个具体的可能的解决scheme?

谢谢

编辑:看到第一个响应(谢谢)后,我想我需要更好地解释我的代码是在做什么:

  1. 首先我在MKDirections对象上调用“ calculateDirectionsWithCompletionHandler
  2. 我找回具有“ 折线 ”属性的MKRoute对象。
  3. 然后我从MKRoute对象的多段线传递的mapview上调用“ addOverlay

就这样。

所以,我已经为我build立了一条折线。 所以我想获得在折线中find的所有点,并将它们映射到一个拉特和长…

要从MKRoute获取多段线的MKRoute ,请使用getCoordinates:range:方法。
该方法位于MKPolylineinheritance的MKMultiPoint类中。

这也意味着这适用于任何折线 – 无论是由您还是由MKDirections创build。

你分配一个足够大的C数组来保存你想要的坐标数并指定范围(例如从0开始的所有点)。

例:

 //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); 

根据路线,准备数百或数千个坐标。

Swift 3版本:

我知道这是一个非常古老的问题,但它仍然是在谷歌search这个问题时,没有很好的Swift解决scheme的热门点击,所以想分享我的微小的扩展,使生活更容易通过添加一个coordinates财产MKPolyline:

https://gist.github.com/freak4pc/98c813d8adb8feb8aee3a11d2da1373f