根据指定位置显示Google导航

时间:2017-07-05 11:33:53

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

我正在研究谷歌地图集成我正在尝试显示谷歌导航目前我正在使用以下代码。我试图根据我通过api的位置显示谷歌导航

NSURL *url=[[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%f,%f&destination=%f,%f&alternateroutes=false&sensor=true" ,12.920631,77.670494,8.3075,77.2218]];
NSURLResponse *res;
NSError *err;NSURL *url=[[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%f,%f&destination=%f,%f&alternateroutes=false&sensor=true" ,12.920631,77.670494,8.3075,77.2218]];
NSURLResponse *res;
NSError *err;

NSData *data=[NSURLConnection sendSynchronousRequest:[[NSURLRequest alloc] initWithURL:url] returningResponse:&res error:&err];
if(data)
{
    NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
    if(dic)
    {
            NSArray *routes=dic[@"routes"];
            NSArray *legs=routes[0][@"legs"];
            NSArray *steps=legs[0][@"steps"];
            NSLog(@"the legs are:%@",steps);
            NSMutableArray *textsteps=[[NSMutableArray alloc] init];
            NSMutableArray *latlong=[[NSMutableArray alloc]init];
            for(int i=0; i< [steps count]; i++){
                NSString *html=steps[i][@"html_instructions"];
                [latlong addObject:steps[i][@"end_location"]];
                NSLog(@"the data:%@",steps[i][@"end_location"]);
                [textsteps addObject:html];
                encodedPath    = [[[steps objectAtIndex:i] valueForKey:@"polyline"] valueForKey:@"points"];
                [self polylineWithEncodedString:encodedPath];

                polyline.strokeColor = [UIColor redColor];
                polyline.strokeWidth = 2.f;
                polyline.map = mapView;
                NSLog(@"the encoded patg:%@",encodedPath);                    

                GMSMarker *marker1 = [[GMSMarker alloc]init];
                marker1.map = mapView;                    
                NSLog(@"Direction path");  
}


}
else
{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"Connection Error" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"", nil];
    [alert show];
}

我期待输出像 enter image description here

2 个答案:

答案 0 :(得分:2)

您希望像Google地图一样显示相同的方向,时间和所有内容。 iOS的 Google Maps SDK 会在地图上为您绘制路径。

您可以使用Google Direction API获取并请求源和目标之间的路线。您可以使用GMSPolyline绘制它。

但是其他的东西,比如转弯的地方,到达目的地和其他东西的时间是什么,你需要手动管理。如果您想要显示与Google相同,您需要制作网址并在WebView中打开

您可以查看URLSchema文档了解更多详情。

答案 1 :(得分:1)

希望你期待这段代码

if ([[UIApplication sharedApplication] canOpenURL:
 [NSURL URLWithString:@"comgooglemaps://"]]) {
[[UIApplication sharedApplication] openURL:  
[NSURL URLWithString:@"comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic"]];
} else {
 NSLog(@"Can't use comgooglemaps://");
}