您的位置:首页 > 移动开发 > 微信开发

微信爱帮周边查询

2016-04-03 17:38 645 查看
想做个微信小工具方便自己查找东西,通过上传经纬度就可以搜索周边,比如ATM 餐馆之类的

之前接触的爱帮有这个接口,百度的也有.我写的是爱帮的,

/**
* WxDaoImpl
*
* @author xuyw
* @email xyw10000@163.com
* @date 2014-06-22
*/


说明

商户搜索接口依据指定的城市、地址(或坐标)和关键词等參数查询满足条件的商户,返回商户列表。

假设不指定地址(或坐标),则在全市搜索。

若不指定keyword,则返回地址周边的商户。地址(或坐标)和keyword必须至少有一个。

最多返回前300个满足指定搜索条件的商户。

形式
http://openapi.aibang.com/search
比如:http://openapi.aibang.com/search?app_key=f41c8afccc586de03a99c86097e98ccb&city=%E5%8C%97%E4%BA%AC&q=%E9%A4%90%E9%A6%86

參数说明
參数类型是否可选意义备注
citystring城市
astring地址地址分为区域地址(如海淀区)和点地址(如安全大厦)。区域地址的查询不受距离參数as的限制;若是点地址。则以此作为中心点,以as为半径的区域内搜索
lngfloat经度地址的经度
latfloat纬度地址的纬度
qstringkeyword如:餐馆、ktv、火车站、北京饭店
catestring类别限于爱帮类别列表
rcint排序方法1:默认排序,依据综合因素排序; 2:按距离排序; 3:按可信度排序。 5:按热度排序。 6:依照星级排序; 注:因为爱帮会依据查询分析将更匹配和准确的结果放在前面。以上排序仅作參考使用
asint距离限制0:无限制。默认; 负数:建议限制距离为其绝对值,但搜索引擎若觉得结果不好则扩展至全市搜索; 正数:强制在此距离范围内
fromint返回结果在总结果的起始位置最小为1。默觉得1,(最多为300)
toint返回结果在总结果中的结束位置默认from+9,(最多为300)。结果为from和to组成闭区间[from, to]
附加说明:參数中地址a和经纬度lng|lat都能够指定中心点,假设仅仅指定了a而没有lng|lat。则在a指定的地址范围内查询,搜索引擎会依据地址a计算相应的中心点;假设仅仅指定了lng|lat而没有a,则以lng|lat指定的经纬度作为中心点;假设同一时候指定a和lng|lat,则在地址a范围内检索。同一时候把lng|lat指定的中心点作为a相应的中心点。

返回内容

该API返回一定数量的商户信息,例如以下:

[code] <?

xml version="1.0" encoding="utf-8" ?

>
<root>
<index_num>121286</index_num>
<total>300</total>
<result_num>10</result_num>
<web_url>http://www.aibang.com</web_url>
<wap_url>http://wap.aibang.com</wap_url>
<bizs>
<biz>
<id>17700376-419866368</id>
<name>巫山烤全鱼(交大店)</name>
<addr>西城区西直门交大东路46号(佰金KTV对面胡同里)</addr>
<tel>010-51562760</tel>
<cate>烤鱼;美食;川菜;烧烤</cate>
<rate>4</rate>
<cost>0</cost>
<desc>江边城外·巫山烤全鱼 北京江边城外餐饮管理有限公司,成立于2006年,是一家专业的连锁餐饮...</desc>
<dist>-1</dist>
<lng>116.3492255</lng>
<lat>39.950558</lat>
<img_url>http://img0.aibangjuxin.com/ipic/f5f9631bec2d9fea_8.jpg</img_url>
</biz>
...
</bizs>
</root>

[/code]
字段类型意义备注
index_numint检索的结果总数检索中全部匹配的记录数量
totalint总记录数接口返回的商户记录总数(最多300)
result_numint返回的记录数当前请求返回的结果数量
web_urlstring爱帮web站相应url
wap_urlstring爱帮wap站相应url
idstring商户ID爱帮商户ID的格式是INT-INT,即中短线连接的两个整数
namestring商户名
addrstring商户地址
telstring商户电话号码
catestring商户类别可为多个,以半角分号;(英文分号)分隔
ratefloat商户星级范围1~5,0表示未评级
costint人均消费单位:元,0表示无消费或未知消费
descstring商户简单介绍
distint与中心点距离单位是千米,-1表示距离无效
lngfloat经度商户所在位置的经度
latfloat纬度商户所在位置的纬度
img_urlstring商户图片url
看到上面api必须输入城市名,我想降低微信上的操作,于是打算用经纬度得到城市,

昨天刚写了这个功能 详情见 http://blog.csdn.net/xuyw10000/article/details/33342489

附上代码

public static List searchFj(String q, String city, String lng, String lat)
throws Exception {
List list = new ArrayList();
String str = HttpUtil.getRequest(SEARCH_FJ + "?

from=1&to=9&rc=2",
"app_key:" + Config.AIBANG_KEY, "city:" + city, "lng:" + lng,
"lat:" + lat, "q:" + q);
Document document = DocumentHelper.parseText(str);
// 得到xml根元素
Element root = document.getRootElement();
// result_num表示搜索到的公交路线数
String result_num = root.element("result_num").getText();
if (!"0".equals(result_num)) {
// 获取根节点下的子节点bizs
Iterator bizs = root.element("bizs").elementIterator();
while (bizs.hasNext()) {
Map map = new HashMap();
Element biz = (Element) bizs.next();
List<Element> elementList = biz.elements();
// 遍历全部子节点
for (Element e : elementList)
map.put(e.getName(), e.getText());

list.add(map);
}
}
return list;
}

public static void main(String[] args) throws Exception {
List list = AiBangUtil.searchFj("餐馆", "南昌", "115.958458", "28.696117");
for (int i = 0; i < list.size(); i++) {
Map<Object, Object> map = (Map<Object, Object>) list.get(i);
for (Map.Entry<Object, Object> entry : map.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());

}
}
}


HttpUtil 见 http://blog.csdn.net/xuyw10000/article/details/33342489

返回结果集

img_url : http://img0.aibangjuxin.com/ipic/dd3d5d81c3f14036_8.jpg id : 693550581-432645732
desc :   滋味楼位于近郊高新开发区火炬大道近丰源集团大厦,主要经营赣南菜。农家菜,菜有点特色。口味...
rate : 4
cate : 美食;其它美食
tel : 0791-8196688
name : 滋味楼
lng : 115.9614
addr : 近郊高新开发区火炬大道(近丰源集团大厦)
cost : 43
lat : 28.69648
dist : 0.3
img_url :
id : 1232117961-423760332
desc :
rate : 0
cate : 美食;其它美食
tel :
name : 渔味名厨
lng : 115.95992
addr : 青山湖区火炬二路罗万罗谢村233号
cost : 0
lat : 28.693348
dist : 0.3
img_url :
id : 285771922-419797984
desc :
rate : 0
cate : 小吃快餐;美食;其它小吃
tel : 18779178698
name : 广昌水饺
lng : 115.96064
addr : 近郊高新区火炬二路(纬泰超市西边斜对面)
cost : 0
lat : 28.69358
dist : 0.4
img_url :
id : 293706066-420217555
desc :   农妇柴房,南昌市是一家知名度非常高的风味餐厅。

价格比較廉价、环境不错、服务态度也非常好。

主要...
rate : 0
cate : 美食;其它美食
tel :
name : 农妇柴房
lng : 115.960198
addr : 高新北大道600号罗万村(近圆中源大酒店)
cost : 30
lat : 28.693144
dist : 0.4
img_url :
id : 1805588933-943974780
desc :
rate : 0
cate : 粤菜;茶餐厅;美食
tel :
name : 避风塘(火炬二路店)
lng : 115.95865
addr : 青山湖区火炬二路
cost : 0
lat : 28.69278
dist : 0.4
img_url :
id : 442301627-443221322
desc :
rate : 0
cate : 美食;甜点饮品
tel :
name : 金冠蛋糕(火炬二路店)
lng : 115.95915
addr : 青山湖区火炬二路
cost : 0
lat : 28.69244
dist : 0.4
img_url :
id : 435466635-435623173
desc :
rate : 0
cate : 美食;其它美食
tel :
name : 鱼米之香
lng : 115.96237
addr : 青山湖区火炬二路406号(近京东大道)
cost : 0
lat : 28.69389
dist : 0.5
img_url :
id : 559255524-424804592
desc :
rate : 0
cate : 小吃快餐;美食;其它小吃
tel :
name : 大食头白领快餐(艾湖店)
lng : 115.96237
addr : 青山湖区火炬二路
cost : 0
lat : 28.69389
dist : 0.5
img_url :
id : 1227347689-423256140
desc :
rate : 0
cate : 美食;小吃快餐;湖北菜;快餐;火锅;其它火锅
tel :
name : 湖北风味小吃
lng : 115.96237
addr : 青山湖区火炬二路附近
cost : 0
lat : 28.69389
dist : 0.5


将结果转换成xml在微信回复多图文

public String getWeather(Map map) {
String message=null;
String openid = map.get("FromUserName") + "";
String toUserName = map.get("ToUserName") + "";
String city = map.get("city") + "";
JSONObject obj = BaiduUtil.getWeatherInfo(city);
String status = obj.getString("status");
if("success".equals(status)){//查找到了
JSONArray jarray=obj.getJSONArray("results");
int size=jarray.size();
if(size>0){
JSONObject j2=jarray.getJSONObject(0);
JSONArray jarray2=j2.getJSONArray("weather_data");
List<Article> articleList = new ArrayList<Article>();
// 创建图文消息
NewsMessage newsMessage = new NewsMessage();
newsMessage.setToUserName(openid);
newsMessage.setFromUserName(toUserName);
newsMessage.setCreateTime(new Date().getTime());
newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);
newsMessage.setFuncFlag(0);
int size2=jarray2.size();
for (int i = 0; i < jarray2.size(); i++) {
JSONObject j3=jarray2.getJSONObject(i);
String date=j3.getString("date");
String weather=j3.getString("weather");
String wind=j3.getString("wind");
String temperature=j3.getString("temperature");
String title="";
String img_url=j3.getString("dayPictureUrl");
if(i==0){
title=date+" "+weather+" "+wind;
}else{
title=date+" "+weather+" "+temperature+" "+wind;
}
Article article = new Article();
article.setTitle(title);
article.setDescription("");
article.setPicUrl(img_url);
article.setUrl("http://blog.csdn.net/xuyw10000");
articleList.add(article);
}
newsMessage.setArticleCount(size2);
newsMessage.setArticles(articleList);
message = MessageUtil.newsMessageToXml(newsMessage);
}else{
map.put("xuywMsg", "啊噢,找不到“"+city+"”的天气。

");
message=sendTextMessage(map);
}
}else{//无结果
map.put("xuywMsg", "啊噢,这个地方百度都找不到。

");
message=sendTextMessage(map);
}
return message;
}


/**
* 发送文本信息
*
* @param map
* @return
*/
public String sendTextMessage(Map map) {
String openid = map.get("FromUserName") + "";
String toUserName = map.get("ToUserName") + "";
String xuywMsg = map.get("xuywMsg") + "";
TextMessage textMessage = new TextMessage();
textMessage.setToUserName(openid);
textMessage.setFromUserName(toUserName);
textMessage.setCreateTime(new Date().getTime());
textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
textMessage.setFuncFlag(0);
textMessage.setContent(xuywMsg);
return MessageUtil.textMessageToXml(textMessage);
}


运行返回xml

<xml>
<ToUserName><![CDATA[sadsdaewwaewea]]></ToUserName>
<FromUserName><![CDATA[bbbbb]]></FromUserName>
<CreateTime><![CDATA[1403495107127]]></CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<FuncFlag><![CDATA[0]]></FuncFlag>
<ArticleCount><![CDATA[9]]></ArticleCount>
<Articles>
<item>
<Title><![CDATA[距离0.3千米]]></Title>
<Description><![CDATA[近郊高新开发区火炬大道(近丰源集团大厦)]]></Description>
<PicUrl><![CDATA[http://img0.aibangjuxin.com/ipic/dd3d5d81c3f14036_8.jpg]]></PicUrl>
<Url><![CDATA[http://api.map.baidu.com/marker?

location=28.69648,115.9614&title=滋味楼&content=近郊高新开发区火炬大道(近丰源集团大厦)&output=html]]></Url>
</item>
<item>
<Title><![CDATA[距离0.3千米]]></Title>
<Description><![CDATA[青山湖区火炬二路罗万罗谢村233号]]></Description>
<PicUrl><![CDATA[http://xywwx.sinaapp.com/resource/img/nopic.jpg]]></PicUrl>
<Url><![CDATA[http://api.map.baidu.com/marker?location=28.693348,115.95992&title=渔味名厨&content=青山湖区火炬二路罗万罗谢村233号&output=html]]></Url>
</item>
<item>
<Title><![CDATA[距离0.4千米]]></Title>
<Description><![CDATA[近郊高新区火炬二路(纬泰超市西边斜对面)]]></Description>
<PicUrl><![CDATA[http://xywwx.sinaapp.com/resource/img/nopic.jpg]]></PicUrl>
<Url><![CDATA[http://api.map.baidu.com/marker?location=28.69358,115.96064&title=广昌水饺&content=近郊高新区火炬二路(纬泰超市西边斜对面)&output=html]]></Url>
</item>
<item>
<Title><![CDATA[距离0.4千米]]></Title>
<Description><![CDATA[高新北大道600号罗万村(近圆中源大酒店)]]></Description>
<PicUrl><![CDATA[http://xywwx.sinaapp.com/resource/img/nopic.jpg]]></PicUrl>
<Url><![CDATA[http://api.map.baidu.com/marker?

location=28.693144,115.960198&title=农妇柴房&content=高新北大道600号罗万村(近圆中源大酒店)&output=html]]></Url>
</item>
<item>
<Title><![CDATA[距离0.4千米]]></Title>
<Description><![CDATA[青山湖区火炬二路]]></Description>
<PicUrl><![CDATA[http://xywwx.sinaapp.com/resource/img/nopic.jpg]]></PicUrl>
<Url><![CDATA[http://api.map.baidu.com/marker?location=28.69278,115.95865&title=避风塘(火炬二路店)&content=青山湖区火炬二路&output=html]]></Url>
</item>
<item>
<Title><![CDATA[距离0.4千米]]></Title>
<Description><![CDATA[青山湖区火炬二路]]></Description>
<PicUrl><![CDATA[http://xywwx.sinaapp.com/resource/img/nopic.jpg]]></PicUrl>
<Url><![CDATA[http://api.map.baidu.com/marker?location=28.69244,115.95915&title=金冠蛋糕(火炬二路店)&content=青山湖区火炬二路&output=html]]></Url>
</item>
<item>
<Title><![CDATA[距离0.5千米]]></Title>
<Description><![CDATA[青山湖区火炬二路406号(近京东大道)]]></Description>
<PicUrl><![CDATA[http://xywwx.sinaapp.com/resource/img/nopic.jpg]]></PicUrl>
<Url><![CDATA[http://api.map.baidu.com/marker?

location=28.69389,115.96237&title=鱼米之香&content=青山湖区火炬二路406号(近京东大道)&output=html]]></Url>
</item>
<item>
<Title><![CDATA[距离0.5千米]]></Title>
<Description><![CDATA[青山湖区火炬二路]]></Description>
<PicUrl><![CDATA[http://xywwx.sinaapp.com/resource/img/nopic.jpg]]></PicUrl>
<Url><![CDATA[http://api.map.baidu.com/marker?location=28.69389,115.96237&title=大食头白领快餐(艾湖店)&content=青山湖区火炬二路&output=html]]></Url>
</item>
<item>
<Title><![CDATA[距离0.5千米]]></Title>
<Description><![CDATA[青山湖区火炬二路附近]]></Description>
<PicUrl><![CDATA[http://xywwx.sinaapp.com/resource/img/nopic.jpg]]></PicUrl>
<Url><![CDATA[http://api.map.baidu.com/marker?location=28.69389,115.96237&title=湖北风味小吃&content=青山湖区火炬二路附近&output=html]]></Url>
</item>
</Articles>
</xml>


将项目部署sae 请求



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: