显示JSON信息的路线

时间:2014-09-13 23:38:53

标签: ios iphone json google-maps directions

我已经为iOS实施了Google Maps API。我已成功加载地图并在其上放下两个引脚。我还实施了Google Maps Directions API,并获得了Json响应。我不知道如何解码并在地图上显示方向。

以下是代码:

在direction.h

-(void)retrieveDirectionsFromOrigin:(CLLocationCoordinate2D)origin toDestination:(CLLocationCoordinate2D)destination
{
    NSString *directionsURL=[NSString                stringWithFormat:@"http://maps.google.com/maps/api/directions/json?   origin=%f,%f&destination=%f,%f&sensor=false",origin.latitude,origin.longitude,destination.longitude,destination.longitude];
    _directionsURL=[NSURL URLWithString:directionsURL];
    [self retrieveDirections:nil withDelegate:self];
}

-(void)retrieveDirections:(SEL)selector withDelegate:(id)delegate{
dispatch_async(dispatch_get_main_queue(), ^{
    NSData *data = [NSData dataWithContentsOfURL:_directionsURL];
    [self fetchedData:data withDelegate:delegate];
});
}

-(void)fetchedData:(NSData *)data withDelegate:(id)delegate{
NSError* error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSLog(@"Directions %@",json);
}

在MapViewController.h中

-(void)viewDidLoad
{

// Creates a marker in the center of the map.
GMSMarker *marker = [[GMSMarker alloc] init];
GMSMarker *marker2 = [[GMSMarker alloc]init];
marker.position = CLLocationCoordinate2DMake(21.422492, 39.826169);
marker2.position = CLLocationCoordinate2DMake(21.413333, 39.893333);
marker.map = mapView;
marker2.map = mapView;
directions=[[Directions alloc]init];
[directions retrieveDirectionsFromOrigin:marker.position toDestination:marker2.position];
[mapViewView setNeedsDisplay];
[mapView setNeedsDisplay];

}

请让我知道接下来该做什么。

1 个答案:

答案 0 :(得分:1)

当您的Directions API返回结果时,它会将它们放在(JSON)路由数组中。该路线可能包含一条或多条腿,具体取决于是否指定了任何航路点。路线字段中的每条路线可能包含以下字段:

  • legs []包含保存有关一条腿的信息的数组 路线,在给定路线内的两个位置之间。单独的腿
    将出现在指定的每个航点或目的地。每条腿 由一系列步骤组成。

  • overview_polyline包含表示的编码点数组 结果路线的近似路径。

<强>腿: leg数组中的每个元素指定在计算路线中从起点到目的地的单程旅程。

  • steps []包含一系列步骤,表示每个步骤的信息 旅途中分开的一步。

  • start_location包含的纬度/经度坐标 这条腿的起源。

  • end_location包含给定的纬度/经度坐标 这条腿的目的地。

<强>步骤: 步骤数组中的每个元素定义计算方向的单个步骤。步骤是方向路线的最原子单位, 包含描述旅程中特定单一指令的单一步骤。例如。 &#34;在W. 4th St。&#34;左转。

下一步: 现在你已经将你的json转换为NSDictionary,使用上面的关键字来获得每条腿的长/纬,并在地图上应用GMSPolygon对象,该对象显示每条腿的自定义路径。