'google map static drawing "route" instead of straight line

I succeeded in getting a google static map displaying a path between 2 coordinates.

The problem is that the drawn path is just a straight line between the 2 points.

I read that to be able to draw the "route" between 2 points on a static google map, as in, following the roads and city geography instead of the straight line, I need to add all the coordinates/crossroads for the path.

Does anyone knows an easy solution to solve this?



Solution 1:[1]

You can definitely do this with the Static Maps API:

get directions using DirectionsService:

https://developers.google.com/maps/documentation/javascript/reference/directions#DirectionsService

and convert the overview path to suit the requirements of the Static Maps API:

https://developers.google.com/maps/documentation/maps-static/start#Paths

Solution 2:[2]

Using Polylines u can draw straight line.

The Polyline class defines a linear overlay of connected line segments on the map. A Polyline object consists of an array of LatLng locations, and creates a series of line segments that connect those locations in an ordered sequence.

u can see the example here

https://google-developers.appspot.com/maps/documentation/javascript/examples/polyline-simple

about polylines

https://developers.google.com/maps/documentation/javascript/overlays

Solution 3:[3]

I think you cannot use this functionnality with the staticmap api. However you can use Directions with the JavaScript API V3.

Solution 4:[4]

I dugged into many suggestions and codes and combined all to make a very simple solution, the code above should work for you:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/directions/json?origin=%f,%f&destination=%f,%f&sensor=false&mode=driving",[startLat floatValue] ,[startLong floatValue], [endLat floatValue], [endLong floatValue]]];

NSDictionary *PathInfo;//the json of the result

NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLResponse *response = nil;
NSError *error = nil;
NSData *responseData =  [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if (!error) {
    PathInfo = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:&error];
    GMSPath *path =[GMSPath PathInfo[@"routes"][0][@"overview_polyline"][@"points"]];
    GMSPolyline *singleLine = [GMSPolyline polylineWithPath:path];
    singleLine.strokeWidth = 3;
    singleLine.strokeColor = [UIColor redColor];
    singleLine.map = mapView_;
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Alter Lagos
Solution 2 vinod_vh
Solution 3 MatTheCat
Solution 4 Dhia