MKDirectionsRequest在地图上的两个给定点之间

时间:2014-05-29 14:50:25

标签: ios objective-c mapkit

我有以下代码总是让我回复"无法确定路线" (或类似的东西,消息各不相同)

   -(void)getPathDirections:(CLLocationCoordinate2D)source withDestination:(CLLocationCoordinate2D)destination{

MKPlacemark *placemarkSrc = [[MKPlacemark alloc] initWithCoordinate:source addressDictionary:nil];
MKMapItem *mapItemSrc = [[MKMapItem alloc] initWithPlacemark:placemarkSrc];
MKPlacemark *placemarkDest = [[MKPlacemark alloc] initWithCoordinate:destination addressDictionary:nil];
MKMapItem *mapItemDest = [[MKMapItem alloc] initWithPlacemark:placemarkDest];
[mapItemSrc setName:@"name1"];
[mapItemDest setName:@"name2"];

MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];
[request setSource:mapItemSrc];
[request setDestination:mapItemDest];
[request setTransportType:MKDirectionsTransportTypeAutomobile];
request.requestsAlternateRoutes = NO;

MKDirections *directions = [[MKDirections alloc] initWithRequest:request];

[directions calculateDirectionsWithCompletionHandler:
 ^(MKDirectionsResponse *response, NSError *error) {
     if (error) {
         // Handle Error
     } else {
         [_mapView removeOverlays:_mapView.overlays];
         [self showRoute:response];
     }
 }];

}

我在罗马尼亚,我的国家在路线支持国家的Apple名单上。

此外,我能够在当前位置和地图上的标记之间进行路线...

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您的代码与欧洲的坐标完美配合。您在上述评论中给我的坐标是在沙特阿拉伯,而不是罗马尼亚。确保您有一个有效的坐标。检查坐标的最简单方法是访问Google地图,然后在搜索框中输入LatitudeLongitude值,并查看地图上的位置。

<强> P.S 您的错误是交换LatitudeLongitude值。改变它们并再次检查:)

而不是:

source =  CLLocationCoordinate2DMake(24.51898765563965, 44.26686859130859); 
destination = CLLocationCoordinate2DMake(24.3679256439209, 44.10536575317383);

使用此:

source =  CLLocationCoordinate2DMake(44.26686859130859, 24.51898765563965); 
destination = CLLocationCoordinate2DMake(44.10536575317383, 24.3679256439209);