最近开发微信公共平台的我想做这么个功能就是输入如:“搜索@石家庄@盛景大厦@银行”这些就是输入“搜索@城市@地点@关键词”能返回我们需要的地理位置以及关键词的信息! 这时我就根据这个写了一个百度的地图封装的类!由于写的比较匆忙没有写什么注释但是比较简单,所以没什么可以注释的,我用的是我的app_key大家可以换成自己的,价格常量啥的替换什么的!呵呵!其实很简单!大家应该一看就懂!我把代码放出来!
<?php /* **powered by 肖伟 http://yun.widuu.com ** **addtime 2013-3-4 ** */ class Map{ private $name; private $address; private $localtion; private $keywords; private $city; function __construct($name=""){ $this->name=$name; $this->address=$this->address(); $this->city=$this->city(); $this->keywords=$this->keywords(); $this->localtion=$this->localtion(); } //获取地址了 function map(){ $url="http://api.map.baidu.com/place/search?&query={$this->keywords}&location={$this->localtion} &radius=2000&output=xml&key=37492c0ee6f924cb5e934fa08c6b1676"; //$key="这是你们自己百度申请的key" echo $url; $data=simplexml_load_string($this->map_text($url),'SimpleXMLElement', LIBXML_NOCDATA); $result=$this->xml2array($data); $resultxml=$result[results][result]; $str=""; foreach($resultxml as $value){ $str.="名称:".$value['name'].'地址:'.$value['address']; } return $str; } //获取城市和地区的经度和纬度方法返回“经度,纬度” private function localtion(){ $url="http://api.map.baidu.com/geocoder?address={$this->address}&output=json&key=f20f201a6642c3a94fa0ae8345c3b302&city={$this->city}"; $data=json_decode($this->map_text($url)); $raddress=$data->result->location; $result="{$raddress->lat},{$raddress->lng}"; return $result; } //返回详细地址信息 private function address(){ $data=$this->jiexi(); return $data[2]; } //返回城市信息 private function city(){ $data=$this->jiexi(); return $data[1]; } //返回我们搜索的关键词 private function keywords(){ $data=$this->jiexi(); return $data[3]; } //解析输入的地址 private function jiexi(){ $address=$this->name; $data=explode("@",$address); return $data; } //curl方法获取内容如果支持file_get_contents函数就用file_get_contents否则curl private function map_text($url) { if(!function_exists('file_get_contents')) { $file_contents = file_get_contents($url); } else { $ch = curl_init(); $timeout = 5; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents = curl_exec($ch); curl_close($ch); } return $file_contents; } //将xml解析成数组的方法 private function xml2array($xmlobject) { if ($xmlobject) { foreach ((array)$xmlobject as $k=>$v) { $data[$k] = !is_string($v) ? $this->xml2array($v) : $v; } return $data; } } } //举例 $map=new Map("搜索@石家庄@宫家庄@银行"); $result=$map->map(); echo $result;如果出现什么错误和改进的大家可以联系我,需要开发的改进的可以联系我!QQ:23169450 我的公众平台
发表评论 取消回复