首页 > 编程 > .NET > 正文

微信公众平台开发之地理位置.Net代码解析

2024-07-10 12:47:02
字体:
来源:转载
供稿:网友

微信公共平台中涉及到地理位置的有两种情况:
        第一、我发送一个自选的地理位置给微信,然后微信可以自动反馈响应的信息。
        第二、让微信获取我们GPS定位地址位置,反馈响应的信息。 
       首先我们先来看第一种,在微信中除了可以发文本,图片,语音等还有一个信息就是地理位置,按照微信接受地理信息的XML信息,我们需要改造一下之前的wxmessage类加上几个属性: 

class wxmessage   {     public string FromUserName { get; set; }     public string ToUserName { get; set; }     public string MsgType { get; set; }     public string EventName { get; set; }     public string Content { get; set; }    public string Recognition { get; set; }    public string MediaId { get; set; }    public string EventKey { get; set; }     public string Location_X { get; set; }    public string Location_Y { get; set; }    public string Scale { get; set; }    public string Label { get; set; }  }    其中Location_X代表纬度,Location_Y代表经度,Scale代表缩放比例,Label代表位置的描述    和接受文本,语音消息一下样,地理信息的MsgType为“location”,修改一下之前的GetWxMessage()函数和OnLoad里面的消息处理: private wxmessage GetWxMessage()   {     wxmessage wx = new wxmessage();     StreamReader str = new StreamReader(Request.InputStream, System.Text.Encoding.UTF8);     XmlDocument xml = new XmlDocument();     xml.Load(str);     wx.ToUserName = xml.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText;     wx.FromUserName = xml.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText;     wx.MsgType = xml.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText;     if (wx.MsgType.Trim() == "text")     {       wx.Content = xml.SelectSingleNode("xml").SelectSingleNode("Content").InnerText;     }     if (wx.MsgType.Trim() == "location")     {       wx.Location_X = xml.SelectSingleNode("xml").SelectSingleNode("Location_X").InnerText;       wx.Location_Y = xml.SelectSingleNode("xml").SelectSingleNode("Location_Y").InnerText;       wx.Scale = xml.SelectSingleNode("xml").SelectSingleNode("Scale").InnerText;       wx.Label = xml.SelectSingleNode("xml").SelectSingleNode("Label").InnerText;     }     if (wx.MsgType.Trim() == "event")     {       wx.EventName = xml.SelectSingleNode("xml").SelectSingleNode("Event").InnerText;       wx.EventKey = xml.SelectSingleNode("xml").SelectSingleNode("EventKey").InnerText;     }     if (wx.MsgType.Trim() == "voice")     {       wx.Recognition = xml.SelectSingleNode("xml").SelectSingleNode("Recognition").InnerText;     }          return wx;   }  protected void Page_Load(object sender, EventArgs e)   {     wxmessage wx = GetWxMessage();     string res = "";     if (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "subscribe")     {       string content = "";       if (!wx.EventKey.Contains("qrscene_"))       {         content = "/:rose欢迎北京永杰友信科技有限公司/:rose/n直接回复“你好”";         res = sendTextMessage(wx, content);       }       else       {         content = "二维码参数:/n" + wx.EventKey.Replace("qrscene_", "");         res = sendTextMessage(wx, content);       }     }     else if (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.ToLower() == "scan")     {       string str = "二维码参数:/n" + wx.EventKey;       res = sendTextMessage(wx, str);     }     else if (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "CLICK")     {       if(wx.EventKey=="HELLO")         res = sendTextMessage(wx, "你好,欢迎使用北京永杰友信科技有限公司公共微信平台!");     }     else     {       WriteLog(wx.MsgType);       if (wx.MsgType == "text" && wx.Content == "你好")       {         res = sendTextMessage(wx, "你好,欢迎使用北京永杰友信科技有限公司公共微信平台!");       }       else if (wx.MsgType == "voice")       {         res = sendTextMessage(wx, wx.Recognition);       }       else if (wx.MsgType == "location")       {         res = sendTextMessage(wx, "您发送的位置是:" + wx.Label + ";纬度是:" + wx.Location_X + ";经度是:" + wx.Location_Y + ";缩放比例为:" + wx.Scale);       }       else       {         res = sendTextMessage(wx, "你好,未能识别消息!");       }     }     Response.Write(res);   }            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表