'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 |