2017-01-23 71 views
0

如何绘制两条不与道路连接的目的地之间的自定义路线?在iOS的Google地图中绘制自定义路线

例如,如果来源是薄饼厂和目标是ATI的解决方案我不得不得出这样的路线,但没有道路连接这两个地方。

enter image description here

我想谷歌的折线代码,但它提供了唯一的道路航点。

NSString *urlString = [NSString stringWithFormat:@"%@?origin=%@,%@&destination=%f,%f&sensor=false&waypoints=optimize:true&mode=driving", @"https://maps.googleapis.com/maps/api/directions/json", getmycurrlat, getmycurrlong, LATI, LONGI]; 
    NSLog(@"my driving api URL --- %@", urlString); 
    NSLog(@"you clicked on button %ld", (long)sender.tag); 
    NSURL* url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"%@", urlString]]; 
    NSURLResponse* res; 
    NSError* err; 
    NSData* data = [NSURLConnection sendSynchronousRequest:[[NSURLRequest alloc] initWithURL:url] returningResponse:&res error:&err]; 
    if (data == nil) { 
     return; 
    } 

    NSDictionary* dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; 
    NSDictionary* routes = [dic objectForKey:@"routes"][0]; 
    NSDictionary* route = [routes objectForKey:@"overview_polyline"]; 
    NSString* overview_route = [route objectForKey:@"points"]; 

    GMSPath* path = [GMSPath pathFromEncodedPath:overview_route]; 
    GMSPolyline* polyline = [GMSPolyline polylineWithPath:path]; 
    polyline.strokeWidth = 5.f; 
    polyline.map = self.mapView; 

所有帮助表示感谢!

+0

地图制作击溃首选的标准方法是在适当的空间道路绕道走,什么样定制你想制作的路线? – vaibhav

+0

比萨工厂和ATI解决方案之间没有连接的道路,只有两栋建筑之间有空间。是否有任何可能的方式来绘制快照中的东西?我的exp地图中的 –

+0

只会在连接的道路上创建路线,如果您事先提供了静态的'lat'' long',但也有动态的方式可以在移动[看一看](http:// stackoverflow。 )的COM /问题/ 18422826 /使用-谷歌-地图如何到磁道-A-用户 - 地点 - 和 - 显示最路径行进-。 – vaibhav

回答

0

尝试这是我的作品,希望它可以帮助你,我使用AFNetworking获取数据

NSString *url1 = [NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/directions/json?&origin=%@&destination=%@&mode=driving",[NSString stringWithFormat:@"%f,%f",self.locationManager.location.coordinate.latitude,self.locationManager.location.coordinate.longitude],pickLoc]; 
    AFHTTPRequestOperationManager *operationManager = [AFHTTPRequestOperationManager manager]; 
    [operationManager POST:url1 
       parameters: nil 
        success:^(AFHTTPRequestOperation *operation, id responseObject) { 
         // NSLog(@"JSON: %@", [responseObject description]); 

         NSArray *routesArray = [responseObject objectForKey:@"routes"]; 

         GMSPolyline *polyline = nil; 

         if ([routesArray count] > 0) 
         { 
          NSDictionary *routeDict = [routesArray objectAtIndex:0]; 
          NSDictionary *routeOverviewPolyline = [routeDict objectForKey:@"overview_polyline"]; 
          NSString *points = [routeOverviewPolyline objectForKey:@"points"]; 
          GMSPath *path = [GMSPath pathFromEncodedPath:points]; 
          polyline = [GMSPolyline polylineWithPath:path]; 
          polyline.strokeWidth = 3; 
          polyline.strokeColor = [UIColor colorWithRed:0.9607 green:0.0358 blue:0.1529 alpha:0.6]; 
          polyline.map = self.viewMapView; 
         } 
        } 
        failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
         NSLog(@"Error: %@", [error description]); 
        } 
    ]; 
+0

这将绘制道路上的折线。但我需要在非道路区域绘制折线。 –

+0

您可以看到routsArray,并根据您的路线设置自己的自定义经纬度,并使折线 –

+0

路线数组仅提供道路的路标。但我需要非道路的航点。请检查上面的图片。 –