输入地理位置关键词搜索周边需要的信息--微信公共平台

widuu 2013-3-4 PHP技术 7,346 1 喜欢 (3)

最近开发微信公共平台的我想做这么个功能就是输入如:“搜索@石家庄@盛景大厦@银行”这些就是输入“搜索@城市@地点@关键词”能返回我们需要的地理位置以及关键词的信息!

这时我就根据这个写了一个百度的地图封装的类!由于写的比较匆忙没有写什么注释但是比较简单,所以没什么可以注释的,我用的是我的app_key大家可以换成自己的,价格常量啥的替换什么的!呵呵!其实很简单!大家应该一看就懂!我把代码放出来!
[php]
<?php
/*
**powered by 肖伟 http://www.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;
[/php]

如果出现什么错误和改进的大家可以联系我,需要开发的改进的可以联系我!QQ:23169450
我的公众平台

转载请注明来自微度网络,本文标题:《输入地理位置关键词搜索周边需要的信息--微信公共平台》

喜欢 3 发布评论
Top