建立類別 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'];
- ?>
相關筆記 ----
沒有留言:
張貼留言