国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
1、微信的地理位置資訊
2、地址位置的應(yīng)用處理
3、地址位置應(yīng)用擴(kuò)展
首頁(yè) 微信小程式 微信開(kāi)發(fā) C#開(kāi)發(fā)微信入口網(wǎng)站及應(yīng)用-使用地理位置擴(kuò)充相關(guān)應(yīng)用

C#開(kāi)發(fā)微信入口網(wǎng)站及應(yīng)用-使用地理位置擴(kuò)充相關(guān)應(yīng)用

Feb 17, 2017 pm 03:24 PM

本文繼續(xù)上一篇《C#開(kāi)發(fā)微信入口網(wǎng)站及應(yīng)用(12)-使用語(yǔ)音處理》,繼續(xù)介紹微信的相關(guān)應(yīng)用。我們知道,地理位置資訊可以用來(lái)做很多相關(guān)的應(yīng)用,除了我們可以知道用戶(hù)所在的位置,還可以關(guān)聯(lián)出一些地理位置的應(yīng)用,如天氣,熱映影片,附近景點(diǎn),附近影院,交通事件等等等,反正所有和地理位置相關(guān)的信息,我們都可以根據(jù)需要做一些擴(kuò)展應(yīng)用。本文主要介紹利用地理位置訊息,如何建構(gòu)使用這些應(yīng)用的操作。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用

1、微信的地理位置資訊

在使用前,我們先來(lái)看看微信的接口,為我們定義了那些關(guān)於與地理位置的資訊。其實(shí)地理位置的訊息,微信分為了兩個(gè)方面,一個(gè)是接收用戶(hù)的地理位置請(qǐng)求,一個(gè)是用戶(hù)允許上報(bào)地理位置操作,定時(shí)發(fā)送的地理位置資訊。

本文主要介紹基於第一種,使用者回報(bào)地理位置後,如何處理的相關(guān)應(yīng)用。

地理位置的回報(bào)操作,就是在輸入的地方,選擇+號(hào)進(jìn)行新增地理位置,然後選擇目前或指定的地理位置地圖,具體操作如下所示。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用 ? ? ? ? ? ? ? ??C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用

地理位置訊息

地理位置訊息

地理位置訊息地理位置訊息ToUserName微訊號(hào)FromUserName發(fā)送方帳號(hào)(一個(gè)OpenID)CreateTime訊息建立時(shí)間(整數(shù))MsgTypelocation ScaleLabelMsgId訊息id,64位元整型
開(kāi)發(fā)者
地理位置經(jīng)度
地圖縮放小
地理位置資訊
訊息id,64位元整型 MsgId
MsgId????

有了上面的地理位置信息,我們?cè)诔绦蚶锩?,需要在消息傳遞過(guò)來(lái)的時(shí)候,定義一個(gè)實(shí)體類(lèi)信息,承載相關(guān)的地理位置信息,方便我們進(jìn)一步的處理操作。

????///?<summary>
????///?接收的地理位置消息????///?</summary>
????[System.Xml.Serialization.XmlRoot(ElementName?=?"xml")]????public?class?RequestLocation?:?BaseMessage
????{????
????????public?RequestLocation()
????????{????????????this.MsgType?=?RequestMsgType.Location.ToString().ToLower();
????????}??
????????///?<summary>
????????///?消息ID????????///?</summary>
????????public?Int64?MsgId?{?get;?set;?}????????///?<summary>
????????///?地理位置維度????????///?</summary>
????????public?decimal?Location_X?{?get;?set;?}????????///?<summary>
????????///?地理位置經(jīng)度????????///?</summary>
????????public?decimal?Location_Y?{?get;?set;?}????????///?<summary>
????????///?地圖縮放大小????????///?</summary>
????????public?int?Scale?{?get;?set;?}????????///?<summary>
????????///?地理位置信息????????///?</summary>
????????public?string?Label?{?get;?set;?}

????}

有了這些信息,我們?cè)谛畔鬟f的時(shí)候,就能很好得到用戶(hù)的相關(guān)數(shù)據(jù)了。

如果僅僅為了返回給用戶(hù),告訴用戶(hù)目前的地理位置信息,可以用下面的操作就可以了。

????????///?<summary>
????????///?對(duì)地理位置請(qǐng)求信息進(jìn)行處理????????///?</summary>
????????///?<param name="info">地理位置請(qǐng)求信息實(shí)體</param>
????????///?<returns></returns>
????????public?string?HandleLocation(Entity.RequestLocation?info)
????????{????????????string?xml?=?"";

????????????ResponseText?txtinfo?=?new?ResponseText(info);
????????????txtinfo.Content?=?string.Format("您發(fā)送的地理位置是:{0}",?info.Label);
????????????xml?=?txtinfo.ToXml();????????????return?xml;
????????}

2、地址位置的應(yīng)用處理

不過(guò)上面的信息,顯然不符合我們擴(kuò)展應(yīng)用的要求,因此我們進(jìn)一步進(jìn)行完善里面對(duì)地理位置信息處理的操作。我們進(jìn)一步把關(guān)于地理位置的操作,放到事件處理模塊里面進(jìn)行處理,處理代碼如下所示。

????????///?<summary>
????????///?對(duì)地理位置請(qǐng)求信息進(jìn)行處理????????///?</summary>
????????///?<param name="info">地理位置請(qǐng)求信息實(shí)體</param>
????????///?<returns></returns>
????????public?string?HandleLocation(Entity.RequestLocation?info)
????????{????????????string?xml?=?"";
????????????EventDispatch?dispatch?=?new?EventDispatch();
????????????xml?=?dispatch.DealLocation(info,?info.Label,?info.Location_Y,?info.Location_X);????????????return?xml;
????????}

在處理的時(shí)候,我們需要先保存用戶(hù)的地理位置信息,把它存儲(chǔ)到用戶(hù)的上下文記錄里面。這樣我們?cè)谔幚碇噶畹臅r(shí)候,把它獲取到,然后傳遞給相關(guān)的方法就可以實(shí)現(xiàn)地理位置的擴(kuò)展應(yīng)用了。

????????????//保存經(jīng)緯度
????????????string?location?=?string.Format("{0},{1}",?lat,?lon);????????????bool?result?=?BLLFactory<UserSet>.Instance.UpdateUserInput(info.FromUserName,?location);

首先對(duì)用戶(hù)地理位置的請(qǐng)求,我根據(jù)數(shù)據(jù)庫(kù)配置給出了一個(gè)用戶(hù)選擇的指令提示,如下所示。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用

為了對(duì)地理位置請(qǐng)求的處理,我定義了一個(gè)用于處理這個(gè)操作的指令操作

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用

這樣整個(gè)地理位置的指令操作,就在應(yīng)答鏈里面進(jìn)行很好的跳轉(zhuǎn)管理了。那么為了實(shí)現(xiàn)天氣、放映影片、附近影院、旅游線(xiàn)路、交通事件等方面的擴(kuò)展應(yīng)用,我們應(yīng)該如何操作呢?

3、地址位置應(yīng)用擴(kuò)展

我們知道,百度或者騰訊都提供了一些開(kāi)放平臺(tái),給我們進(jìn)行各種方式的使用。那么我們這里以使用百度LBS平臺(tái)應(yīng)用來(lái)構(gòu)建一些模塊。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用 ?

?C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用

這上面都有很多相關(guān)的接口供使用,我們可以根據(jù)其提供的數(shù)據(jù)格式進(jìn)行封裝,然后進(jìn)行調(diào)用處理就可以了。

剛才說(shuō)了,我配置了一些指令,用來(lái)構(gòu)建相關(guān)的應(yīng)用,指令的最后是一些事件代碼的定義,我們對(duì)這些末端的事件代碼進(jìn)行處理,就可以給用戶(hù)返回相關(guān)的信息了,總體的操作代碼如下所示。

????????///?<summary>
????????///?其他插件操作,如天氣,景點(diǎn)、電影影訊、交通等????????///?</summary>
????????///?<param name="info">基礎(chǔ)消息</param>
????????///?<param name="eventKey">事件標(biāo)識(shí)</param>
????????///?<returns></returns>
????????public?string?DealPlugin(BaseMessage?info,?string?eventKey)
????????{????????????//LogTextHelper.Info(eventKey);
????????????string?userInput?=?BLLFactory<UserSet>.Instance.GetUserInput(info.FromUserName);????????????string?xml?=?"";????????????switch?(eventKey)
????????????{????????????????case?"event-void-wether":
????????????????????xml?=?new?WeatherPlugin().Response(info,?userInput);????????????????????break;????????????????case?"event-void-movie":
????????????????????xml?=?new?MoviePlugin().Response(info,?userInput);????????????????????break;????????????????case?"event-void-cinema":
????????????????????xml?=?new?CinemaPlugin().Response(info,?userInput);????????????????????break;????????????????case?"event-void-travel":
????????????????????xml?=?new?TravelPlugin().Response(info,?userInput);????????????????????break;????????????????case?"event-void-traffic":
????????????????????xml?=?new?TrafficEventPlugin().Response(info,?userInput);????????????????????break;????????????????default:????????????????????break;
????????????}????????????return?xml;
????????}

這里以天氣為例,說(shuō)明該如何調(diào)用百度的接口的,首先我們封裝一下相關(guān)的接口調(diào)用。

????????///?<summary>
????????///?根據(jù)參數(shù)調(diào)用百度接口,獲取相關(guān)的結(jié)果數(shù)據(jù)????????///?</summary>
????????///?<param name="location">地理位置</param>
????????///?<param name="ak">API調(diào)用鍵</param>
????????///?<returns></returns>
????????public?BaiduWeatherResult?Execute(string?location,?string?ak)
????????{
????????????location?=?HttpUtility.UrlEncode(location);????????????var?url?=?string.Format("http://m.miracleart.cn/{0}&output=json&ak={1}",?location,?ak);

????????????BaiduWeatherResult?result?=?BaiduJsonHelper<BaiduWeatherResult>.ConvertJson(url);????????????return?result;
????????}

其中的BaiduWeatherResult 是我根據(jù)調(diào)用返回的Json結(jié)果,構(gòu)建的一個(gè)實(shí)體類(lèi),用來(lái)存儲(chǔ)返回的內(nèi)容。具體代碼如下所示。

????///?<summary>
????///?天氣請(qǐng)求結(jié)果Json對(duì)象????///?</summary>
????public?class?BaiduWeatherResult?:?BaiduResult
????{????????///?<summary>
????????///?天氣預(yù)報(bào)信息????????///?</summary>
????????public?List<BaiduWeatherData>?results?=?new?List<BaiduWeatherData>();
????}????///?<summary>
????///?城市的天氣信息????///?</summary>
????public?class?BaiduWeatherData
????{????????///?<summary>
????????///?當(dāng)前城市????????///?</summary>
????????public?string?currentCity?{?get;?set;?}????????///?<summary>
????????///?天氣預(yù)報(bào)信息????????///?</summary>
????????public?List<BaiduWeatherJson>?weather_data?=?new?List<BaiduWeatherJson>();
????}????///?<summary>
????///?天氣預(yù)報(bào)的單條記錄Json信息????///?</summary>
????public?class?BaiduWeatherJson
????{????????///?<summary>
????????///?天氣預(yù)報(bào)時(shí)間????????///?</summary>
????????public?string?date?{?get;?set;?}????????///?<summary>
????????///?白天的天氣預(yù)報(bào)圖片url????????///?</summary>
????????public?string?dayPictureUrl?{?get;?set;?}????????///?<summary>
????????///?晚上的天氣預(yù)報(bào)圖片url????????///?</summary>
????????public?string?nightPictureUrl?{?get;?set;?}????????///?<summary>
????????///?天氣狀況????????///?</summary>
????????public?string?weather?{?get;?set;?}????????///?<summary>
????????///?風(fēng)力????????///?</summary>
????????public?string?wind?{?get;?set;?}????????///?<summary>
????????///?溫度????????///?</summary>
????????public?string?temperature?{?get;?set;?}
????}

為了構(gòu)建返回給客戶(hù)的圖文數(shù)據(jù),我們需要構(gòu)建一個(gè)News對(duì)象,然后生成XML數(shù)據(jù)返回給服務(wù)器進(jìn)行處理即可。

????????///?<summary>
????????///?響應(yīng)用戶(hù)請(qǐng)求,并返回相應(yīng)的XML數(shù)據(jù)????????///?</summary>
????????///?<param name="info">微信基礎(chǔ)信息</param>
????????///?<param name="location">地理位置:經(jīng)緯度坐標(biāo)或者地名</param>
????????///?<returns></returns>
????????public?string?Response(BaseMessage?info,?string?location)
????????{????????????string?xml?=?"";????????????//"廣州"?或者?"116.305145,39.982368"????
????????????if?(!string.IsNullOrEmpty(location))
????????????{
????????????????BaiduWeatherResult?result?=?Execute(location,?baiduAK);????????????????if?(result?!=?null?&&?result.results.Count?>?0)
????????????????{
????????????????????BaiduWeatherData?data?=?result.results[0];????????????????????if?(data?!=?null)
????????????????????{
????????????????????????ArticleEntity?first?=?new?ArticleEntity();
????????????????????????first.Title?=?string.Format("{0}?天氣預(yù)報(bào)",?data.currentCity);

????????????????????????ResponseNews?news?=?new?ResponseNews(info);
????????????????????????news.Articles.Add(first);????????????????????????int?i?=?0;????????????????????????foreach?(BaiduWeatherJson?json?in?data.weather_data)
????????????????????????{
????????????????????????????ArticleEntity?article?=?new?ArticleEntity();
????????????????????????????article.Title?=?string.Format("{0}\n{1}?{2}?{3}",?json.date,?json.weather,?json.wind,?json.temperature);????????????????????????????if?(i++?==?0)
????????????????????????????{
????????????????????????????????article.PicUrl?=?IsDayTime()???json.dayPictureUrl?:?json.nightPictureUrl;
????????????????????????????}????????????????????????????else
????????????????????????????{
????????????????????????????????article.PicUrl?=?json.dayPictureUrl;
????????????????????????????}
????????????????????????????news.Articles.Add(article);
????????????????????????}

????????????????????????xml?=?news.ToXml();
????????????????????}
????????????????}
????????????}????????????return?xml;
????????}

這樣就很好實(shí)現(xiàn)了整體的功能了,具體界面功能可以訪(fǎng)問(wèn)我的微信(廣州愛(ài)奇迪)進(jìn)行了解,下面是功能截圖供參考。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用 ? ?C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用 ?C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用-使用地理位置擴(kuò)展相關(guān)應(yīng)用

?更多C#開(kāi)發(fā)微信入口網(wǎng)站及應(yīng)用-使用地理位置擴(kuò)充相關(guān)應(yīng)用?相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!


本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線(xiàn)上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話(huà)題