php 手机定位

编程入门 行业动态 更新时间:2024-10-08 06:17:50

php <a href=https://www.elefans.com/category/jswz/34/1769814.html style=手机定位"/>

php 手机定位

最近在做一个手机端的webapp地图应用,而核心内容当然是定位了,但是定位的话有几种方式,IP定位,GPS定位,基站定位(这个貌似webapp用不了), 那么剩下核心的gps定位和ip定位了,我们知道,html5有定位API,但是该API拿到的GPS数据是硬件坐标,无法直接显示在地图上。 后来上百度LBS云看到有地图IP定位API和GPS坐标转换API,地址: /  百度地图API的调用需要申请KEY,这里就不具体介绍了,直接贴上本人写了两个关键方法,为了方便前台调用,返回数据采用以下格式  
{address: "北京市海淀区西二旗北路",province: "北京市",city: "北京市",street: "西二旗北路",street_number: "",city_code: 131,lng: 116.3207676804,lat: 40.064084055578
}

核心类

<?php/*** @author xialei <xialeistudio@gmail>*/
class map
{private static $_instance;const REQ_GET = 1;const REQ_POST = 2;/*** 单例模式* @return map*/public static function instance(){if (!self::$_instance instanceof self){self::$_instance = new self;}return self::$_instance;}/*** 执行CURL请求* @author: xialei<xialeistudio@gmail>* @param $url* @param array $params* @param bool $encode* @param int $method* @return mixed*/private function async($url, $params = array(), $encode = true, $method = self::REQ_GET){$ch = curl_init();if ($method == self::REQ_GET){$url = $url . '?' . http_build_query($params);$url = $encode ? $url : urldecode($url);curl_setopt($ch, CURLOPT_URL, $url);}else{curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, $params);}curl_setopt($ch, CURLOPT_REFERER, '百度地图referer');curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$resp = curl_exec($ch);curl_close($ch);return $resp;}/*** ip定位* @param string $ip* @return array* @throws Exception*/public function locationByIP($ip){//检查是否合法IPif (!filter_var($ip, FILTER_VALIDATE_IP)){throw new Exception('ip地址不合法');}$params = array('ak' => '百度地图API KEY','ip' => $ip,'coor' => 'bd09ll'//百度地图GPS坐标);$api = '';$resp = $this->async($api, $params);$data = json_decode($resp, true);//有错误if ($data['status'] != 0){throw new Exception($data['message']);}//返回地址信息return array('address' => $data['content']['address'],'province' => $data['content']['address_detail']['province'],'city' => $data['content']['address_detail']['city'],'district' => $data['content']['address_detail']['district'],'street' => $data['content']['address_detail']['street'],'street_number' => $data['content']['address_detail']['street_number'],'city_code' => $data['content']['address_detail']['city_code'],'lng' => $data['content']['point']['x'],'lat' => $data['content']['point']['y']);}/*** GPS定位* @param $lng* @param $lat* @return array* @throws Exception*/public function locationByGPS($lng, $lat){$params = array('coordtype' => 'wgs84ll','location' => $lat . ',' . $lng,'ak' => '百度地图API KEY','output' => 'json','pois' => 0);$resp = $this->async('/', $params, false);$data = json_decode($resp, true);if ($data['status'] != 0){throw new Exception($data['message']);}return array('address' => $data['result']['formatted_address'],'province' => $data['result']['addressComponent']['province'],'city' => $data['result']['addressComponent']['city'],'street' => $data['result']['addressComponent']['street'],'street_number' => $data['result']['addressComponent']['street_number'],'city_code'=>$data['result']['cityCode'],'lng'=>$data['result']['location']['lng'],'lat'=>$data['result']['location']['lat']);}
}

更多推荐

php 手机定位

本文发布于:2024-03-15 00:48:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737737.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:手机   php

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!