建立類別 GMap,用地址轉換經緯度
GMap.php
class GMap
{
function getPageData($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect: '));
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_FILETIME, true);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 4);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
//取得原始碼
$result['data'] = curl_exec($ch);
//$info_tmp = curl_getinfo($ch);
//取得info資訊
//$result['info'] = $info_tmp;
unset($info_tmp);
curl_close($ch);
return $result;
}
/**
* 初始化
* @param $apikey 金鑰
*/
function __construct()
{
$this->apikey = '填入金鑰';
}
/*
* 獲取地址經緯度 - 從google map
*/
public function getLatLng($addr='',$apikey='')
{
$apikey = ($apikey=='') ? $this->apikey : $apikey;
$url = "https://maps.googleapis.com/maps/api/geocode/json?address=$addr&key=$apikey";
$geocode = $this->getPageData($url);
if(isset($geocode['data']))
$geocode = $geocode['data'];
else
// 當 Google map 解析不了時,回應虛擬的經緯度
$geocode = '{"results":[{"geometry":{"location":{"lat":-1,"lng":-1}}}]}';
$output = json_decode($geocode);
$latitude = $output->results[0]->geometry->location->lat;
$longitude = $output->results[0]->geometry->location->lng;
return array('lat'=>$latitude,'lng'=>$longitude);
}
}
主程式 main.php
<?php
date_default_timezone_set('Asia/Taipei');
include('gmap.php');
$gmap = new GMap();
// 填入地址(高雄捷運美麗島站, 22.631754649712416, 120.30137231318399)
// 像美麗島站這類大地標,像上面明確的描述,通常也解析的出來
// 注意:地址字串內不要有空白
$data = $gmap->getLatLng('高雄市新興區中山一路115號');
echo "經度:".$data['lng'].",緯度:".$data['lat'];
?>
相關筆記 ----
沒有留言:
張貼留言