Question

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&center=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.

Was it helpful?

Solution

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");
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top