最近开发微信公共平台的我想做这么个功能就是输入如:“搜索@石家庄@盛景大厦@银行”这些就是输入“搜索@城市@地点@关键词”能返回我们需要的地理位置以及关键词的信息! 这时我就根据这个写了一个百度的地图封装的类!由于写的比较匆忙没有写什么注释但是比较简单,所以没什么可以注释的,我用的是我的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 我的公众平台

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部