找出两个地方之间的路线数量

时间:2011-05-23 09:40:41

标签: objective-c cocoa-touch ios google-maps core-location

我需要使用Google maps API找出从源到目的地的路线数量,然后找出哪一条是最短的路线。

我可以使用此代码

获得一条路线
-(NSArray*) calculateRoutesFrom:(CLLocationCoordinate2D) f to: (CLLocationCoordinate2D) t {
    NSString* saddr = [NSString stringWithFormat:@"%f,%f", f.latitude, f.longitude];
    NSString* daddr = [NSString stringWithFormat:@"%f,%f", t.latitude, t.longitude];

    NSString* apiUrlStr = [NSString stringWithFormat:@"http://maps.google.com/maps?output=dragdir&saddr=%@&daddr=%@", saddr, daddr];
    NSURL* apiUrl = [NSURL URLWithString:apiUrlStr];
    NSLog(@"api url: %@", apiUrl);
    NSString *apiResponse = [NSString stringWithContentsOfURL:apiUrl];
    NSString* encodedPoints = [apiResponse stringByMatching:@"points:\\\"([^\\\"]*)\\\"" capture:1L];

    return [self decodePolyLine:[encodedPoints mutableCopy]];
}

但我无法获得多条路线。

我刚开始使用Google Maps API;我跟着this tutorial

我该怎么做?任何人都可以发布一些示例代码或教程吗?

2 个答案:

答案 0 :(得分:5)

  

替代品(可选),如果设置为   true,指定方向   服务可能提供不止一个   响应中的路由替代方案。   请注意,提供路线选择   可能会增加响应时间   服务器。

来自The Google Directions API

您需要添加查询链接alternatives = true

答案 1 :(得分:0)

要获得多条路线,您必须使用standard google direction api。通过这个api,您可以根据您在驾驶,步行或骑自行车中选择的行驶模式获得不同的路线(仅限美国的自行车路线)例如:http://maps.googleapis.com/maps/api/directions/xml?origin=srcLatitude,srcLongitude&destination=destLatitude,destLongitude&mode=driving&sensor=false
在这里,您可以给出源和目的地纬度和经度,并将模式参数的值更改为驾驶,步行或骑自行车以获得多条路线。