第一种:腾讯地图api,量大需要付费(推荐使用):
public function getLatByTencentMap(){
$address = "杭州市西湖国际科技大厦";
$url='http://apis.map.qq.com/ws/geocoder/v1/?address='.$address.'&key=免费的自己申请';
$result=file_get_contents($url);
$data = json_decode($result,TRUE);
print_r($data);
}
说明:上面URL中的key要自己申请,免费的,本人是去腾讯地图申请的
返回结果:
附:key的申请方法
然后如下:
第二种:(官方的):
使用流程:直接 复制下面方法到项目文件中,只需要传个地址参数,其他代码不用动 。
/**
* 搜索地址,查询周边的位置 ()
*/
public function query_address($key_words){
$header[] = 'Referer: http://lbs.qq.com/webservice_v1/guide-suggestion.html';
$header[] = 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36';
$url ="http://apis.map.qq.com/ws/place/v1/suggestion/?®ion=&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&keyword=".$key_words;
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//执行并获取HTML文档内容
$output = curl_exec($ch);
// print_r($output);die;
//释放curl句柄
curl_close($ch);
// return $output;
$result = json_decode($output,true);
// print_r($result);
// $res = $result['data'][0];
return $result;
//echo json_encode(['error_code'=>'SUCCESS','reason'=>'查询成功','result'=>$result);
}
示例:
返回值:有很多与参数地址相近的经纬度(一般默认取第一条数据,也就是下标是0的那条经纬度)
if(!empty($result['data'][0])){
$address = $result['data'][0];
// var_dump($result) ;
sleep(0.5);
//print_r($address);
$lat2 = $address['location']['lat'];
$lng2 = $address['location']['lng'];
}