php百度地图坐标绘制矩形 调用百度poi搜索矩形区域内数据

来源:互联网 发布:勒夏特列原理 知乎 编辑:程序博客网 时间:2024/06/05 14:29

首先贴出三个重要的方法

/** * @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 headercurl_setopt($ch, CURLOPT_NOBODY, false); //表示需要response bodycurl_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来搞了

原创粉丝点击