2013-07-08 33 views
1

我想要道路地圖圖像兩個地址,我嘗試過Google地圖API和MapQuest API,我想要靜態圖像中的數據以便我可以使用該地圖圖像生成PDF文件,我怎麼能做到這一點如何使用php,谷歌地圖或mapquest獲取兩個地址之間的路線圖圖像

我已經試過 起始地址是6100里士滿大道,休斯敦TX 77057

谷歌地圖

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的地圖

首先報廢的經度和緯度每個源地址和目的地址

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&[email protected]??}[email protected]}[email protected]??fDeP&scenter=40.77069,-73.992378&ecenter=40.770935,-73.97644 

的形狀檢查此鏈接 http://www.mapquestapi.com/common/encodedecode.html

我怎樣才能獲得通過的道路的路線,或者我們可以說,在行車路線以圖像格式映射。

回答

1

這是我多麼上述問題解決

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"); 
} 
相關問題