I want road map image two addresses, I have tried Google map API and MapQuest API, I want data in static image so that I can use that image to generate PDF file, how can I do this
I have tried Start address is 6100 Richmond Ave, Houston TX 77057
Google Map
function grab_image($url,$saveto){
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$raw=curl_exec($ch);
curl_close ($ch);
if(file_exists($saveto)){
unlink($saveto);
}
$fp = fopen($saveto,'x');
fwrite($fp, $raw);
fclose($fp);
}
$address = $data['address1'].$data['address2']." ".$data['state']." ".$data['city']." ".$data['zip'];
$address = urlencode($address);
$url = "http://maps.googleapis.com/maps/api/staticmap?size=710x300&sensor=true";
$url .= "&path=color:0x0000ff|weight:10|6100+Richmond+Ave+Houston+TX+77057";
$url .= "|".$address ;
$url .= "&markers=color:red|label:A|6100+Richmond+Ave+Houston+TX+77057";
$url .= "&markers=color:green|label:B|".$address;
grab_image($url, $upload_dir.$plan['ID'].".png");
MapQuest Map
First scrapped longitude and latitude each source and destination address
function getLatLong($myaddress) {
$myaddress = urlencode($myaddress);
$url = "http://maps.googleapis.com/maps/api/geocode/json?address=".$myaddress."&sensor=false";
//get the content from the api using file_get_contents
$getmap = file_get_contents_curl($url);
//the result is in json format. To decode it use json_decode
$googlemap = json_decode($getmap);
//get the latitute, longitude from the json result by doing a for loop
foreach($googlemap->results as $res){
$address = $res->geometry;
$latlng = $address->location;
//$formattedaddress = $res->formatted_address;
return $latlng;
}
}
http://open.mapquestapi.com/staticmap/v4/getmap?size=600,200&zoom=14&shapeformat=cmp¢er=40.770021,-73.984003&shape=y_zwFjsrbMxWkz@??}DoC??a@}CyBt@ySiN??fDeP&scenter=40.77069,-73.992378&ecenter=40.770935,-73.97644
for shape check this link http://www.mapquestapi.com/common/encodedecode.html
How can I get the route via road or we can say driving directions on map in image format.
This is how I have solved above problem
function file_get_contents_curl($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$mapquest_key = "YOUR_API_KEY";
$source_address = "6100 Richmond Ave, Houston TX 77057";
$sLat = "29.73189";
$sLan = "-95.48736";
$plan_add = $plan['address1']." ".$plan['address2']." ".$plan['state']." ".$plan['city']." ".$plan['zip'];
# Step 1: Mapquest API url to get session_key and lng and lat
$mapquest_url1 = "http://www.mapquestapi.com/directions/v1/route?key=".$mapquest_key."&outFormat=json";
$mapquest_url1 .= "&from=".urlencode($wocg_address)."&to=".urlencode($plan_add);
$mapquest_data = file_get_contents_curl($mapquest_url1);
$mapquest_data_array = json_decode($mapquest_data);
$session_id = isset($mapquest_data_array->route->sessionId) ? $mapquest_data_array->route->sessionId : "";
$eLat = isset($mapquest_data_array->route->locations[1]->latLng->lat) ? $mapquest_data_array->route->locations[1]->latLng->lat : "";
$eLan = isset($mapquest_data_array->route->locations[1]->latLng->lng) ? $mapquest_data_array->route->locations[1]->latLng->lng : "";
# Step 2: Get images based on start and end location and session id
if(!empty($session_id) && !empty($eLat) && !empty($eLan)) {
$mapquest_url2 = "http://www.mapquestapi.com/staticmap/v3/getmap?key=".$mapquest_key;
$mapquest_url2 .= "&size=710,300&type=map";
$mapquest_url2 .= "&session=".$session_id;
$mapquest_url2 .= "&scenter=".$sLat.",".$sLan;
$mapquest_url2 .= "&ecenter=".$eLat.",".$eLan;
grab_image($mapquest_url2, $upload_dir.$plan['ID'].".png");
} else {
# If failure with mapquest then scrap image from google map
$plan_address = urlencode($plan_add);
$url = "http://maps.googleapis.com/maps/api/staticmap?size=710x300&sensor=true";
$url .= "&path=color:0x0000ff|weight:10|77001+TX+Houston+USA";
$url .= "|".$plan_address;
$url .= "&markers=color:red|label:A|77001+TX+Houston+USA";
$url .= "&markers=color:green|label:B|".$plan_address;
grab_image($url, $upload_dir.$plan['ID'].".png");
}