在地图上显示谷歌方向api响应

pra*_*bhu 2 iphone google-maps-api-3 ios

我在我的iOS应用程序中使用google api V3,我要求google api方向服务,通过http GET方法,我得到了一个非常大的json响应,我从源到目的地有很多备用路由,现在我想显示路由地图上的每个替代方案,我该怎么做?是否需要在iOS中集成google sdk,或者我只能使用webView,请帮助我,并提出最简单的方法.提前致谢

sup*_*kuN 5

您不需要包含任何谷歌SDK来绘制地图上的路线.看下面的课程.

MKPolyline

MKPolyLineview

谷歌地图api方向服务将为您提供腿(坐标)来绘制两个特定点之间的路线.

因为你已经有来自Direction api的json响应,你现在必须解析json并从json获得所有的腿指向以创建Coordinate数组.

Jsonkit用于解析

这些要点可能是或大部分是入选的.如何将Google Directions API折线字段解码为适用于iPhone的objective-C中的lat长点?

如果你有坐标数组,那么首先你必须创建一个CLLocationCoordinate2D数组,如下所示:

CLLocationCoordinate2D *pointArr        =       malloc(sizeof(CLLocationCoordinate2D) * [your_CoordinateArray count]);

for(int i = 0; i < [your_CoordinateArray count]; i++){
  pointArr[i]       =      [your_CoordinateArray objectAtIndex:i];
}
Run Code Online (Sandbox Code Playgroud)

然后,您必须将折线添加到地图中

 MKPolyline *line                        = [MKPolyline polylineWithCoordinates:pointArr count:[your_CoordinateArray count]];

    if (nil != line)
    {
        [your_Map addOverlay:line];

    }
Run Code Online (Sandbox Code Playgroud)

然后你必须实现以下map委托:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{       

MKOverlayView* overlayView = nil;

lineView                    =       [[MKPolylineView alloc] initWithPolyline:overlay];// lineView is an ivar, object of MKPolylineView
lineView.fillColor          =       [UIColor greenColor];
lineView.strokeColor        =       [UIColor greenColor];

lineView.lineWidth          =       10.0;
lineView.alpha              =       0.9;
overlayView                 =       lineView;

return overlayView;
}    
Run Code Online (Sandbox Code Playgroud)

现在,如果要在两个点之间显示两条不同的路径,则必须创建两个不同的坐标数组,并对两个数组应用上述方法

希望这会帮助你.