国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

微信公眾平臺開發(三)位置信息的識別

移動開發 Android
微信公眾平臺是騰訊公司在微信的基礎上新增的功能模塊,通過這一平臺,個人和企業都可以打造一個微信的公眾號,并實現和特定群體的文字、圖片、語音的全方位溝通、互動。

位置識別這是實際應用經常應用的消息,特別是很多商家,通過了解用戶位置,給用戶提供特別的產品或是商場的推薦。其中用戶可能發送兩種類型的消息:

1.微信地理位置信息

2.路名、標志性建筑或是商場名稱

1.微信地理位置消息

認識一下,微信地理位置消息,包含一些什么信息

  1. <xml> 
  2. <ToUserName><![CDATA[toUser]]></ToUserName> 
  3. <FromUserName><![CDATA[fromUser]]></FromUserName> 
  4. <CreateTime>1351776360</CreateTime> 
  5. <MsgType><![CDATA[location]]></MsgType> 
  6. <Location_X>23.134521</Location_X> 
  7. <Location_Y>113.358803</Location_Y> 
  8. <Scale>20</Scale> 
  9. <Label><![CDATA[位置信息]]></Label> 
  10. <MsgId>1234567890123456</MsgId> 
  11. </xml>  

包含的主要信息有經度緯度和Label的位置??梢愿鶕abel中描述的位置信息,提供給用戶對應的服務。也可根據用戶的經度緯度信息,提供你最近的產品或是有地域性的產品。

[[70582]]

首先根據微信的地理位置信息,定義WeChatLocationMessage類,并能把Xml轉換為WeChatLocationMessage對象

  1. public class WeChatLocationMessage { 
  2.     private String toUserName; 
  3.     private String fromUserName; 
  4.     private String createTime; 
  5.     private String msgType; 
  6.     private String locationx; 
  7.     private String localtiony; 
  8.     private String scale; 
  9.     private String label; 
  10.     private String msgId; 
  11.     public static WeChatLocationMessage getWeChatLocationMessage(String xml){ 
  12.         XStream xstream = new XStream(new DomDriver()); 
  13.         WeChatLocationMessage  message = null
  14.         xstream.alias("xml", WeChatLocationMessage.class); 
  15.         xstream.aliasField("ToUserName", WeChatLocationMessage.class"toUserName"); 
  16.         xstream.aliasField("FromUserName", WeChatLocationMessage.class"fromUserName"); 
  17.         xstream.aliasField("CreateTime", WeChatLocationMessage.class"createTime"); 
  18.         xstream.aliasField("MsgType", WeChatLocationMessage.class"msgType"); 
  19.         xstream.aliasField("Location_X", WeChatLocationMessage.class"locationx"); 
  20.         xstream.aliasField("Location_Y", WeChatLocationMessage.class"localtiony"); 
  21.         xstream.aliasField("Scale", WeChatLocationMessage.class"scale"); 
  22.         xstream.aliasField("Label", WeChatLocationMessage.class"label"); 
  23.         xstream.aliasField("MsgId", WeChatLocationMessage.class"msgId"); 
  24.         message = (WeChatLocationMessage)xstream.fromXML(xml); 
  25.         return message; 
  26.     } 
  27. //getter and setter 

本文利用百度的地圖API,查找最近的銀行做為示例。

  1. public String getPalace(String query,String lat,String lng) throws ClientProtocolException, IOException{ 
  2.     HttpClient httpClient = new DefaultHttpClient(); 
  3.     String url = palceRequestUrl(query,lat,lng); 
  4.     logger.log(Level.INFO, url); 
  5.     HttpGet httpget = new HttpGet(url); 
  6.     ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
  7.     String responseBody = httpClient.execute(httpget, responseHandler); 
  8.     logger.log(Level.INFO,"baidu response:"+responseBody); 
  9.     return responseBody; 
  10.  
  11. public String palceRequestUrl(String query,String lat,String lng) throws UnsupportedEncodingException { 
  12.     String url = WeChatConstant.BASEURL + "place/search?query=" + URLEncoder.encode(query,"UTF-8") + "&key=" 
  13.             + WeChatConstant.MAPKEY +"&location="+lat+","+lng +"&radius=2000"+"&output=" + WeChatConstant.OUTPUTFORMAT; 
  14.     return url; 

輸出的結果

  1. <PlaceSearchResponse> 
  2.     <status>OK</status> 
  3.     <results> 
  4.         <result> 
  5.             <name>中國工商銀行東長安街支行</name> 
  6.             <location> 
  7.                 <lat>39.915891</lat> 
  8.                 <lng>116.41867</lng> 
  9.             </location> 
  10.             <address>東城區東長安街1號東方廣場西三辦公樓1樓</address> 
  11.             <uid>a025683c73033c35a21de987</uid> 
  12.             <detail_url>http://api.map.baidu.com/place/detail?uid=a025683c73033c35a21de987&amp;amp;output=html&amp;amp;source=placeapi 
  13.             </detail_url> 
  14.             <tag>銀行,王府井/東單</tag> 
  15.         </result> 
  16.       </results> 
  17. </PlaceSearchResponse> 

接下來,把百度地圖反映出來的最近位置信息,以圖文消息的格式展示給微信用戶

  1.     public static String getWeChatReplyNewsMessageByBaiduPlace(List<BaiduPlaceResponse> placeList, double lat, double lng,String userName, int size){ 
  2.         WeChatReplyNewsMessage newsMessage = new WeChatReplyNewsMessage(); 
  3.         List<Item> items = new ArrayList<Item>(); 
  4.         StringBuffer strBuf = new StringBuffer(); 
  5.         logger.log(Level.INFO,"placeList count="+placeList.size()); 
  6.         newsMessage.setItems(items); 
  7.         if(placeList.size()>size){ 
  8.             newsMessage.setArticleCount(size); 
  9.         } 
  10.         else
  11.             newsMessage.setArticleCount(placeList.size()); 
  12.         } 
  13.         logger.log(Level.INFO,"article count="+newsMessage.getArticleCount()); 
  14.         newsMessage.setCreateTime(new Date().getTime()+""); 
  15.         newsMessage.setMsgType("news"); 
  16.         newsMessage.setFuncFlag("0"); 
  17.         newsMessage.setToUserName(userName); 
  18.         newsMessage.setFromUserName(WeChatConstant.FROMUSERNAME); 
  19.         for(int i = 0;i <newsMessage.getArticleCount();i++){ 
  20.             BaiduPlaceResponse place = placeList.get(i); 
  21.             Double distance = GeoUtil.DistanceOfTwoPoints(Double.valueOf(place.getLng()), Double.valueOf(place.getLat()), lng, lat, GaussSphere.Beijing54); 
  22.             Item item = new Item(); 
  23.             item.setTitle(place.getName()+"["+distance+"米]"+"\n"+place.getAddress()+"\n"+place.getTelephone()); 
  24.             item.setPicUrl(""); 
  25.             item.setUrl(place.getDetailUrl()); 
  26.             item.setDescription(""); 
  27.             items.add(item); 
  28.         } 
  29. logger.log(Level.INFO,"newMessage="+newsMessage.toString()); 
  30.         strBuf = strBuf.append(getWeChatNewsMessage(newsMessage)); 
  31.         return strBuf.toString(); 
  32.     } 
  33.     public static String getWeChatNewsMessage(WeChatReplyNewsMessage newsMessage){ 
  34.         XStream xstream = new XStream(new DomDriver()); 
  35.         xstream.alias("xml", WeChatReplyNewsMessage.class); 
  36.         xstream.aliasField("ToUserName", WeChatReplyNewsMessage.class"toUserName"); 
  37.         xstream.aliasField("FromUserName", WeChatReplyNewsMessage.class"fromUserName"); 
  38.         xstream.aliasField("CreateTime", WeChatReplyNewsMessage.class"createTime"); 
  39.         xstream.aliasField("MsgType", WeChatReplyNewsMessage.class"msgType"); 
  40.         xstream.aliasField("ArticleCount", WeChatReplyNewsMessage.class"articleCount"); 
  41.         xstream.aliasField("Content", WeChatReplyNewsMessage.class"content"); 
  42.         xstream.aliasField("FuncFlag", WeChatReplyNewsMessage.class"funcFlag"); 
  43.         xstream.aliasField("Articles", WeChatReplyNewsMessage.class"items"); 
  44.         xstream.alias("item", Item.class); 
  45.         xstream.aliasField("Title", Item.class"title"); 
  46.         xstream.aliasField("Description", Item.class"description"); 
  47.         xstream.aliasField("PicUrl", Item.class"picUrl"); 
  48.         xstream.aliasField("Url", Item.class"url"); 
  49.         return xstream.toXML(newsMessage); 
  50.     } 

別走開,下頁更勁爆~

#p#

2.路名、標志性建筑或是商場名稱

對路名、標志性建筑等信息,方法還是通過第三方地圖信息,確定輸入的位置信息的經度緯度。

本文使用百度地圖API,確定所查找的位置的經度和緯度。

  1. public String getGeoCode(String query) throws ClientProtocolException, IOException{ 
  2.         HttpClient httpClient = new DefaultHttpClient(); 
  3.         String url = geoCodeRequestUrl(query); 
  4.         logger.log(Level.INFO, url); 
  5.         HttpGet httpget = new HttpGet(url); 
  6.         ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
  7.         String responseBody = httpClient.execute(httpget, responseHandler); 
  8.         logger.log(Level.INFO,"baidu response:"+responseBody); 
  9.         return responseBody; 
  10.     } 
  11.     public String geoCodeRequestUrl(String query) throws UnsupportedEncodingException{ 
  12.         String url = WeChatConstant.BASEURL + "geocoder?address=" + URLEncoder.encode(query,"UTF-8") + "&key=" 
  13.                 + WeChatConstant.MAPKEY + "&output=" + WeChatConstant.OUTPUTFORMAT; 
  14.         return url; 
  15.     } 

確定了經度和緯度,問題就變成和第1種消息類型一致了,根據經度緯度去做相應處理。

3.源代碼

本文的代碼較長,提供源代碼下載

WeChatDemo下載

閱讀第一篇:微信公眾平臺開發(一)平臺綜述

閱讀第二篇:微信公眾平臺開發(二)簡單的聊天機器人

轉載自http://www.qiyadeng.com/

本文鏈接地址: 微信公眾平臺開發(三)–位置信息的識別

責任編輯:閆佳明 來源: cnblogs
相關推薦

2013-04-15 16:56:48

微信公眾平臺Android開發

2013-04-10 18:45:52

微信公眾平臺接口開發

2013-04-09 17:23:57

微信微信公眾平臺歡迎信息

2013-04-10 18:07:08

微信公眾平臺接口開發

2013-04-10 18:19:40

微信公眾平臺接口開發

2013-04-10 16:15:40

微信公眾平臺接口開發

2013-05-24 09:35:46

Java實現

2013-04-11 10:50:07

微信公眾平臺接口開發

2013-04-09 23:38:02

微信公眾平臺開發者

2013-04-10 18:24:48

微信公眾平臺接口開發

2013-04-10 18:29:09

微信公眾平臺接口開發

2013-04-10 17:59:50

微信公眾平臺接口開發

2014-11-20 09:38:40

C#

2013-04-08 15:13:39

微信公眾平臺

2013-04-03 09:08:45

陶瑾微信公眾平臺微信開發者

2013-11-01 09:21:47

微信微信公眾平臺微信公眾賬號

2013-04-10 16:51:56

微信公眾平臺接口開發

2013-03-25 16:35:04

微信微信公眾平臺開發者

2013-04-10 17:52:15

微信公眾平臺接口開發

2013-04-15 17:02:33

點贊
收藏

51CTO技術棧公眾號

av日韩一区| 二区三区精品| 91免费版在线看| 国内久久久精品| 女人天堂在线| 久久亚区不卡日本| 欧美激情论坛| 开心激情综合| 亚洲精品在线看| 一本免费视频| av不卡在线播放| 国产亚洲精品自在久久| 台湾佬综合网| 日韩中文字幕国产精品| 欧美xxx.com| ㊣最新国产の精品bt伙计久久| 300部国产真实乱| 香蕉亚洲视频| 国产精品视频久久久久| 精品国产亚洲一区二区三区| 欧美男同性恋视频网站| 情se视频网在线观看| 国产精品美女久久久久久2018| 超碰免费在线公开| 欧美一级专区| 久久久久久久久久久久久久久久av| 经典一区二区| 91精品视频在线看| 亚洲特级毛片| 国产精品日韩欧美一区二区三区 | 亚洲一级片网站| 成人午夜激情片| 国内性生活视频| 日本一区二区三区视频视频| 亚洲乱码国产一区三区| 国产精品视频一二| 欧美最顶级a∨艳星| 欧美在线观看视频一区二区| av网站在线看| 亚洲欧美日韩成人| 高清一区二区三区av| 日韩av手机在线观看| 小处雏高清一区二区三区| 高清日韩一区| 91丨porny丨户外露出| 2018av男人天堂| 欧美日本精品一区二区三区| 这里有精品可以观看| 久久久久久久久爱| 免费一区视频| 免费在线观看的毛片| 欧洲国产伦久久久久久久| 亚洲涩涩在线| 国产精品自拍偷拍| 麻豆久久婷婷| 日本成人黄色网址| 亚洲福利视频久久| 欧美欧美黄在线二区| 在线视频精品一区| 精品久久香蕉国产线看观看亚洲| sis001亚洲原创区| 亚洲综合自拍一区| 中文字幕第一页久久| 国产精品69xx| 97免费高清电视剧观看| 成人精品视频一区二区三区| 国产在线一在线二| 91精品成人久久| 国产真实乱偷精品视频免| 国产毛片av在线| 国产精品大片wwwwww| 26uuu久久天堂性欧美| 丝袜在线观看| 色一情一乱一伦一区二区三区 | 蜜桃传媒麻豆第一区在线观看| 波多野结衣在线观看| 久久精品.com| 国产在线播放91| 亚洲免费伊人电影在线观看av| 国产精品成人一区二区艾草 | 亚洲精品成人a8198a| 一区二区成人在线| 国内综合精品午夜久久资源| 超薄肉色丝袜脚交一区二区| 超碰96在线| 大地资源第二页在线观看高清版| 午夜精品久久久久久久久久久久久| 色婷婷国产精品综合在线观看| 欧美国产精品v| 日韩在线欧美在线| 在线不卡日本v二区707| 日韩美女av在线| 午夜天堂精品久久久久| 天堂资源在线中文| 日本黄色片在线观看| 欧美天堂亚洲电影院在线播放| 欧美bbbbb| 午夜国产精品视频| a天堂中文在线| 欧美一进一出视频| 国产成人综合精品| 激情综合色综合久久综合| 国产精伦一区二区三区| 国产视频一二| 欧美在线xxx| 亚洲韩国日本中文字幕| 亚洲免费大片在线观看| 丁香啪啪综合成人亚洲小说| 亚洲欧洲日本mm| 日韩一区二区在线| 欧美13videosex性极品| 性欧美精品一区二区三区在线播放| 欧美成人精品一区二区| 欧美一二区视频| 欧美性生交xxxxxdddd| 国产精品丝袜一区| 国产91丝袜在线播放九色| 美女视频亚洲色图| 91精品国产91久久久久久青草| 男人添女人下面免费视频| 亚洲精品中字| y111111国产精品久久婷婷| 久久久久久com| 亚洲深夜福利在线| 精品少妇一区二区三区视频免付费| 一区二区免费视频| 国产精品嫩草影院com| 国产成人精品一区二| 日韩avvvv在线播放| 伊人狠狠色j香婷婷综合| 不卡在线一区二区| 日韩中文av| 亚洲人和日本人hd| 成人国产精选| 成人精品国产| 成人做爰视频www| 日韩av影片| 国产又色又爽又黄刺激在线视频| 成人性爱视频在线观看| av在线第一页| 天堂8中文在线| 亚洲天堂免费电影| 日本美女久久| 九九热这里有精品| 成人免费观看49www在线观看| 欧美性suv| 精品国产一区二| 天天躁日日躁狠狠躁欧美| 色综合综合色| 亚洲欧美综合国产精品一区| 午夜日韩激情| 国产在线麻豆精品观看| 久久免费看少妇高潮| 国产精品久久久久影院| 性做久久久久久久免费看| 特黄特色欧美大片| 你懂的成人av| 国产又粗又猛又爽又黄91精品| 成人小视频免费观看| 一区二区三区欧美在线观看| 色系网站成人免费| 亚洲香蕉伊综合在人在线视看| 久久久999精品视频| 91成人在线看| 日韩伦理在线免费观看| 动漫成人在线观看| 亚洲欧洲自拍| 日韩精品首页| 国产91精品欧美| 亚洲成人精品在线观看| 在线久久视频| 三级黄色网址| 成人一级福利| 欧美黄色大片在线观看| 激情久久久久久久久久久久久久久久| 国产精品久久久一区麻豆最新章节| 欧美人妇做爰xxxⅹ性高电影 | 欧美一级bbbbb性bbbb喷潮片| 国产欧美综合精品一区二区| 99热手机在线| 在线女人免费视频| 精品成人久久| 一区二区三区日韩精品| yellow中文字幕久久| 午夜精品一区二区在线观看的| 中国国产一级毛片| 久久久久观看| 丁香桃色午夜亚洲一区二区三区| 欧美熟乱第一页| 91精品久久久久久久| www.99com| 狠狠做六月爱婷婷综合aⅴ| 久久久国产精品麻豆| 91原创在线视频| 国产suv精品一区二区三区| 久久综合九色| 欧美日韩国产经典色站一区二区三区 | 免费av在线电影| 91久久亚洲| 色777狠狠综合秋免鲁丝|