纬度和经度点从MKPolyline
我试图找出一种方法来获取在iOS应用程序上的MKMapView上绘制MKPolyline的所有经度和纬度点。
我知道MKPolyline不存储纬度和经度点,但我正在寻找一种方法来build立一个经纬度数组,并且MKPolyline会在地图上触摸。
有人有这个具体的可能的解决scheme?
谢谢
编辑:看到第一个响应(谢谢)后,我想我需要更好地解释我的代码是在做什么:
- 首先我在MKDirections对象上调用“ calculateDirectionsWithCompletionHandler ”
- 我找回具有“ 折线 ”属性的MKRoute对象。
- 然后我从MKRoute对象的多段线传递的mapview上调用“ addOverlay ”
就这样。
所以,我已经为我build立了一条折线。 所以我想获得在折线中find的所有点,并将它们映射到一个拉特和长…
要从MKRoute
获取多段线的MKRoute
,请使用getCoordinates:range:
方法。
该方法位于MKPolyline
inheritance的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