将MKPointAnnotation放在特定距离的MKDirections上

时间:2013-11-06 20:17:15

标签: iphone objective-c ios7 mapkit

我正在使用MKDirections绘制从A点到B点的路线,我正在寻找将MKPointAnnotation放置在离起点特定距离的位置。

例如,我有一个MKMap,其中MKDirections从洛杉矶到纽约。然后我想在用户决定采取的路线的10英里标记处放置一个别针。

有关如何使用所选路线在特定距离找到纬度/经度的想法吗?

感谢。

- (void)showDirections:(MKDirectionsResponse *)response
{
    NSInteger iDistance = 0;
    BOOL bPointinStep = NO;
    self.response = response;
    for (MKRoute *route in _response.routes)
    {
        NSLog(@"route.distance: %.0f", route.distance);
        responseNumber = responseNumber + 1;
        [_mapView addOverlay:route.polyline level:MKOverlayLevelAboveRoads];
        for (MKRouteStep *step in route.steps)
        {

            iDistance = iDistance + step.distance;

            NSLog(@"iDistance: %.0ld", (long)iDistance);
            NSLog(@"step.distance: %.0f", step.distance);
            NSLog(@"%@", step.instructions);
            if (iProgress < iDistance && !bPointinStep) {
                NSLog(@"pin point is on this step");
                bPointinStep = YES;
            }
         }
    }
}

这是有效的,因为我能够确定应该放置针点的哪一步,但我的问题是如何确定步骤中的位置。

1 个答案:

答案 0 :(得分:0)

我将解释我解决类似问题的方法。

您可以使用属性step.polyline.coordinate。它为您提供路线每一步的终点的纬度和经度。当您的变量iDistance超过10英里时,此步骤的终点(或上一步的结束点)将给出您正在寻找的近似坐标。在任何情况下,您将拥有包含&#34; 10英里&#34;距离。

要获得更精确的坐标,您可以在此段的终点和前一段的终点之间执行一些简单的三角运算,以计算距离并放置MKPointAnnotation。

我希望它可以帮到你。