我正在使用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;
}
}
}
}
这是有效的,因为我能够确定应该放置针点的哪一步,但我的问题是如何确定步骤中的位置。
答案 0 :(得分:0)
我将解释我解决类似问题的方法。
您可以使用属性step.polyline.coordinate。它为您提供路线每一步的终点的纬度和经度。当您的变量iDistance超过10英里时,此步骤的终点(或上一步的结束点)将给出您正在寻找的近似坐标。在任何情况下,您将拥有包含&#34; 10英里&#34;距离。
要获得更精确的坐标,您可以在此段的终点和前一段的终点之间执行一些简单的三角运算,以计算距离并放置MKPointAnnotation。
我希望它可以帮到你。