ホームページ >WeChat アプレット >WeChatの開発 >.NET を使用して WeChat パブリック プラットフォームを開発するための地理的位置の例の詳細な説明
この記事は主に、WeChat パブリック プラットフォームの開発のための地理的位置 .Net コードの詳細な分析を提供します。興味のある友人は参照してください
WeChat パブリック プラットフォームには地理的位置に関係する 2 つの状況があります:
最初に、私が送信します。自ら選択した地理的位置を WeChat に送信すると、WeChat は応答情報を自動的にフィードバックできます。
二番目に、WeChat に GPS 測位住所の位置を取得させ、応答情報をフィードバックさせます。まず最初に、WeChat ではテキスト、写真、音声などの送信に加えて、地理的位置という情報がもう 1 つあります。属性:
rreeeeは考慮から外れます。私たち自身が送信した地理情報の場所は必ずしも実際の場所ではないため、ここでの地理情報の場所は承認を必要としないことに注意してください。プライバシーに関与することなく、入力インターフェイスで任意の選択を行うことができます。
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); }
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; } public string Latitude { get; set; } public string Longitude { get; set; } public string Precision { get; set; } } 改造一下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; WriteLog("MsgType:"+wx.MsgType); if (wx.MsgType.Trim() == "event") { wx.EventName = xml.SelectSingleNode("xml").SelectSingleNode("Event").InnerText; WriteLog(wx.EventName); if (wx.EventName.ToUpper() == "LOCATION") { wx.Latitude = xml.SelectSingleNode("xml").SelectSingleNode("Latitude").InnerText; wx.Longitude = xml.SelectSingleNode("xml").SelectSingleNode("Longitude").InnerText; wx.Precision = xml.SelectSingleNode("xml").SelectSingleNode("Precision").InnerText; } else { wx.EventKey = xml.SelectSingleNode("xml").SelectSingleNode("EventKey").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() == "voice") { wx.Recognition = xml.SelectSingleNode("xml").SelectSingleNode("Recognition").InnerText; } return wx; }を変更して完了します。これにより、WeChat の「ユーザー位置情報」を開いたときに、WeChat プラットフォームはセッションに入るのみであることを通知します。初めて取得するか、5 秒ごとに取得するか、後者を選択すると、地理的位置情報が 5 秒ごとにフィードバックされることがわかります。注意する必要があります: これによると問題ないと思いますが、セッションに入ると、GPS 測位の前に携帯電話の GPS が検索されていることがわかります。 , コンテンツは表示されません。 GPS で検索して位置を特定すると、ユーザーの位置情報を取得するイベントがトリガーされることがわかりますが、これは、基地局の測位によっておおよその位置が取得できるということを私が想像していたものではありません。長い間それをしていて、外出したときに携帯電話の位置を確認し、偶然返信を見て、はっと気づきました。
しかし、誰もが緯度と経度の座標のみを知っていることの使用は何ですか?特定の場所ではありません。実際には、BaiduMap API の逆住所解析を使用して、どの都市、どの街路などの座標をガイドし、さらに近くの状況を知るために、さまざまな方法を使用できます。とはいえ、BaiduMapについてはまた機会があればお話しします
以上が.NET を使用して WeChat パブリック プラットフォームを開発するための地理的位置の例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。