在 iPhone 中获取行车路线

Posted

技术标签:

【中文标题】在 iPhone 中获取行车路线【英文标题】:Get driving direction in iPhone 【发布时间】:2010-08-22 17:20:54 【问题描述】:

我阅读了 iPhone 和 Google Map for iPhone EULA,并希望在我的 iPhone 应用程序(本机)中实现静态行车路线图。

我正在寻找一种简单的方法来获取路线数据并使用 ios 4 SDK 的 Mapkit 中的内置路线显示功能进行显示。

有没有程序员用谷歌地图和必应地图实现这样的功能?由于 Bing 地图在 SOAP Web 服务中提供了路线数据,因此使用 Bing 的服务来编程驾驶方向似乎更容易。

【问题讨论】:

【参考方案1】:

我找到了解决方案。只需使用 JSON 解析器即可获得谷歌地图 API

例如:

NSDictionary *testJsondata = [self testJson:GoogleMapXMLDirectionQueryString];
    NSLog(@"Here is the title of the response: %@", [testJsondata valueForKey:@"status"]);

    for (id key in testJsondata) 

        NSLog(@"key: %@, value: %@", key, [testJsondata objectForKey:key]);

    


- (NSDictionary *) testJson : (NSString*) url

    id response = [self objectWithUrl:[NSURL URLWithString:url]];

    NSDictionary *feed = (NSDictionary *)response;
    return feed;


- (id) objectWithUrl:(NSURL *)url

    SBJsonParser *jsonParser = [SBJsonParser new];
    NSString *jsonString = [self stringWithUrl:url];

    // Parse the JSON into an Object
    return [jsonParser objectWithString:jsonString error:NULL];


- (NSString *)stringWithUrl:(NSURL *)url

    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
                                                cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                            timeoutInterval:30];
    // Fetch the JSON response
    NSData *urlData;
    NSURLResponse *response;
    NSError *error;

    // Make synchronous request
    urlData = [NSURLConnection sendSynchronousRequest:urlRequest
                                    returningResponse: &response
                                                error: &error];

    // Construct a String around the Data from the response
    return [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];


- (NSString *)getDirectionInXML:(NSString *)GoogleMapXMLDirectionQueryString 

    NSError *error;
    NSURLResponse *response;
    NSData *dataReply;
    NSString *stringReply;

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: 
                                    [NSURL URLWithString: [NSString stringWithFormat:GoogleMapXMLDirectionQueryString]]];
    [request setHTTPMethod: @"GET"];
    dataReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    stringReply = [[NSString alloc] initWithData:dataReply encoding:NSUTF8StringEncoding];
    return stringReply;

【讨论】:

以上是关于在 iPhone 中获取行车路线的主要内容,如果未能解决你的问题,请参考以下文章

步行、自行车和公共交通路线以及每种模式所需的时间,iPhone

从当前位置移动网络行车路线

如何获取地图上两点之间的路线方向以绘制行车路线?

如何在我的应用 iOS6 中获取行车路线

iPhone上的聚胺

iphone app - 如何只获取一次当前位置并将其存储以用于另一个功能?