国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php版微信JS-SDK地理位置取街景實例

2024-05-04 21:50:38
字體:
供稿:網(wǎng)友

根據(jù)《微信JS-SDK地理位置接口例子》中的QQMapModel和ImageCacheModel類進行擴展。看了下騰訊地圖有個靜態(tài)圖的V2版,我順便也加上去,繼續(xù)圍繞騰訊地圖把取街景的接口寫上。由于是Demo,像取街景有幾個參數(shù)可以自行定義,我只用默認(rèn)!不多說看碼吧

QQMapModel.class.php: (注:API_KEY 用QQ在官方申請,目前免費)

  1. namespace Home/Model; 
  2. class QQMapModel { 
  3.     const 
  4.         PANO_API = 'http://apis.map.qq.com/ws/streetview/v1/getpano'
  5.         API_KEY = 'CZQBZ-RC53V-2RQPX-UFNBE-FCH2J-DF00'
  6.  
  7.     static public function call($urlarray $params = null) { 
  8.         $url = $url.'?'.http_build_query($params); 
  9.         $ch = curl_init($url); 
  10.         curl_setopt_array($charray
  11.             CURLOPT_RETURNTRANSFER => 1, 
  12.             CURLOPT_FOLLOWLOCATION => 1, 
  13.             CURLOPT_AUTOREFERER => 1, 
  14.             CURLOPT_SSL_VERIFYHOST => 0, 
  15.             CURLOPT_SSL_VERIFYPEER => 0, 
  16.             CURLOPT_VERBOSE => 1, 
  17.         )); 
  18.         $result = curl_exec($ch); 
  19.         if (curl_errno($ch)) { 
  20.             return false; 
  21.         } 
  22.         curl_close($ch); 
  23.         return $result
  24.     } 
  25.  
  26.     //新靜態(tài)圖v2接口 
  27.     static function staticMap($point$otherParam = array()) { 
  28.         $pos = explode(','$point); 
  29.         $posStr = $pos[1].','.$pos[0]; 
  30.         $param = array
  31.             'size' => '620*380'
  32.             'center' => $posStr
  33.             'zoom' => 13, 
  34.             'format' => 'png'
  35.             'maptype' => 'roadmap'
  36.             'markers' => $posStr
  37.             'key' => self::API_KEY, 
  38.         ); 
  39.         if(count($otherParam)) 
  40.             $param = array_merge($param$otherParam); 
  41.         return 'http://apis.map.qq.com/ws/staticmap/v2/?' . http_build_query($param); 
  42.     } 
  43.  
  44.     //取街景圖接口 
  45.     static function streetView($pano$otherParam = array()) { //max 960x640 
  46.         $param = array
  47.             'size' => '620x380'
  48.             'pano' => $pano
  49.             'heading' => 0, 
  50.             'pitch' => 0, 
  51.             'key' => self::API_KEY, 
  52.         ); 
  53.         if(count($otherParam)) 
  54.             $param = array_merge($param$otherParam); 
  55.         return 'http://apis.map.qq.com/ws/streetview/v1/image?' . http_build_query($param); 
  56.     } 
  57.  
  58.     //街景圖的ID接口 
  59.     static function getPano($location$otherParam = array()) { 
  60.         $param = array
  61.             'location' => $location
  62.             'radius' => 200, 
  63.             'output' => 'json'
  64.             'key' => self::API_KEY, 
  65.         ); 
  66.         if(count($otherParam)) 
  67.             $param = array_merge($param$otherParam); 
  68.         $result = self::call(self::PANO_API, $param); 
  69.         if ($result) { 
  70.             return json_decode($result, 1); 
  71.         } 
  72.         return false; 
  73.     } 
  74.  
  75.     //靜態(tài)圖v1版接口 
  76.     static function mapImage($point$otherParam = array()) { 
  77.         $param = array
  78.             'size' => '620*380'
  79.             'center' => $point
  80.             'zoom' => 13, 
  81.             'format' => 'png'
  82.             'markers' => $point
  83.         ); 
  84.         if(count($otherParam)) 
  85.             $param = array_merge($param$otherParam); 
  86.         return 'http://st.map.qq.com/api?' . http_build_query($param); 
  87.     } 
  88. ImageCacheModel類:(只是在上篇教程上加多個靜態(tài)方法處理街景的緩存) 
  89. public static function getStreetCacheImg($points) { 
  90.         $fileName = md5($points); 
  91.         self::$FULL_CACHE_DIR = C('PUBLIC_FULL_DIR').self::CACHE_DIR; 
  92.         $cacheImg = self::$FULL_CACHE_DIR.'/'.$fileName.self::$TYPE
  93.         if(file_exists($cacheImg)) { 
  94.             return self::CACHE_DIR.$fileName.self::$TYPE
  95.         } else { 
  96.             $res = QQMapModel::getPano($points); 
  97.             if($res['status'] === 0) { 
  98.                 $pano = $res['detail']['id']; 
  99.                 $imageUrl = QQMapModel::streetView($pano); 
  100.                 self::saveCacheImg($imageUrl$fileName); 
  101.                 return self::CACHE_DIR.$fileName.self::$TYPE
  102.             } 
  103.             return self::CACHE_DIR.'default'.self::$TYPE
  104.         } 
  105.     } 

然后Controller里的處理:(至于Layout模版里的AJAX調(diào)用與上篇地理接口差不多,這里就不寫了)

  1. public function streetpicAction() { 
  2.         layout(false); 
  3.         if(I('pos','')) { 
  4.             $target = ImageCacheModel::getStreetCacheImg(I('pos')); 
  5.             $url = __ROOT__.$target
  6.             redirect($url); 
  7.         } 
  8.     } 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 石阡县| 南投县| 衢州市| 涿州市| 肇源县| 佳木斯市| 阿鲁科尔沁旗| 合川市| 西峡县| 奈曼旗| 水城县| 潞城市| 连平县| 金坛市| 门源| 涿鹿县| 镇原县| 庆云县| 肇庆市| 灌南县| 乌海市| 吉木乃县| 铜梁县| 潼南县| 错那县| 息烽县| 盱眙县| 白朗县| 余姚市| 余庆县| 霍山县| 霸州市| 广南县| 泾源县| 惠水县| 凤冈县| 元谋县| 黔南| 垫江县| 资源县| 中山市|