1. 程式人生 > >php百度地圖座標繪製矩形 呼叫百度poi搜尋矩形區域內資料

php百度地圖座標繪製矩形 呼叫百度poi搜尋矩形區域內資料

首先貼出三個重要的方法

/**
 * @date:2017-07-12 9:23
 * @auth:網路搜尋
 * @parame :百度地圖php版呼叫方法
*/
function caculateAKSN($ak, $sk, $url, $querystring_arrays, $method = 'GET')
{
    if ($method === 'POST'){
        ksort($querystring_arrays);
    }
    $querystring = http_build_query($querystring_arrays);
    return 
md5(urlencode($url.'?'.$querystring.$sk)); } /** * @date:2017-07-12 10:57 * @auth:百度地圖文件 * 百度座標系轉換成標準GPS坐系 * @param float $lnglat 座標(如:106.426, 29.553404) * @return string 轉換後的標準GPS值: */ function BD09LLtoWGS84($lnglat){ // 經度,緯度 $lnglat = explode(',', $lnglat); list($x,$y) = $lnglat; $Baidu_Server
= "http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x={$x}&y={$y}"; $result = @file_get_contents($Baidu_Server); $json = json_decode($result); if($json->error == 0){ $bx = base64_decode($json->x); $by = base64_decode($json->y); $GPS_x = 2 * $x -
$bx; $GPS_y = 2 * $y - $by; return $GPS_x.','.$GPS_y;//經度,緯度 }else return $lnglat; } /** * @date:2017-07-12 11:34 * @auth:leishaofa *@parame根據gps一個座標繪製一個矩形 * @parame$lng 經度 * @parame$lat 緯度 * @parame $distance一千米 */ function resultmap($lng,$lat,$distance=1){ $fEARTH_RADIUS=6371;//地球平均半徑 $dlng=2*asin(sin($distance / (2*$fEARTH_RADIUS))/cos(deg2rad($lat))); $dlng=rad2deg($dlng); $dlat=$distance/$fEARTH_RADIUS; $dlat=rad2deg($dlat); return array( 'left-top'=>array('lat'=>$lat+$dlng,'lng'=>$lng-$dlng), 'right-top'=>array('lat'=>$lat+$dlng,'lng'=>$lng+$dlng), 'left-bottom'=>array('lat'=>$lat-$dlng,'lng'=>$lng-$dlng), 'right-bottom'=>array('lat'=>$lat-$dlng,'lng'=>$lng+$dlng) ); }

在來看控制器方法


$gps=explode(',',$this->BD09LLtoWGS84('114.282167,30.553489'));
$dao=$this->resultmap($gps[0],$gps[1]);
$url="http://api.map.baidu.com/place/v2/search?query=便利店,&bounds=".$dao['left-bottom']['lat'].",
".$dao['left-bottom']['lng'].",".$dao['right-top']['lat'].",".$dao['right-top']['lng'].
"&output=json&page_size=10&page_num=1&ak="C('BAIDUAK');
$ch = curl_init() ; curl_setopt( $ch , CURLOPT_URL , $url ) ; curl_setopt( $ch , CURLOPT_HEADER , false ) ; //表示需要response header curl_setopt( $ch , CURLOPT_NOBODY , false ) ; //表示需要response body curl_setopt( $ch , CURLOPT_RETURNTRANSFER , TRUE ) ; curl_setopt( $ch , CURLOPT_FOLLOWLOCATION , FALSE ) ; curl_setopt( $ch , CURLOPT_AUTOREFERER , TRUE ) ; curl_setopt( $ch , CURLOPT_TIMEOUT , 120 ) ; $result = curl_exec( $ch ) ; print_r( $result ) ;

嘗試ns失敗只有用ak方式ip來搞了