亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

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

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

Feb 17, 2017 pm 03:24 PM

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

C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用

1、微信的地理位置資訊

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

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

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

C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用 ? ? ? ? ? ? ? ??C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用

地理位置訊息

地理位置訊息

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

有了上面的地理位置信息,我們在程序里面,需要在消息傳遞過來的時候,定義一個實體類信息,承載相關(guā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;?}

????}

有了這些信息,我們在信息傳遞的時候,就能很好得到用戶的相關(guān)數(shù)據(jù)了。

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

????????///?<summary>
????????///?對地理位置請求信息進行處理????????///?</summary>
????????///?<param name="info">地理位置請求信息實體</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)用處理

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

????????///?<summary>
????????///?對地理位置請求信息進行處理????????///?</summary>
????????///?<param name="info">地理位置請求信息實體</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;
????????}

在處理的時候,我們需要先保存用戶的地理位置信息,把它存儲到用戶的上下文記錄里面。這樣我們在處理指令的時候,把它獲取到,然后傳遞給相關(guān)的方法就可以實現(xiàn)地理位置的擴展應(yīng)用了。

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

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

C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用

為了對地理位置請求的處理,我定義了一個用于處理這個操作的指令操作

C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用

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

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

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

C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用 ?

?C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用

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

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

????????///?<summary>
????????///?其他插件操作,如天氣,景點、電影影訊、交通等????????///?</summary>
????????///?<param name="info">基礎(chǔ)消息</param>
????????///?<param name="eventKey">事件標識</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;
????????}

這里以天氣為例,說明該如何調(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://ipnx.cn/{0}&output=json&ak={1}",?location,?ak);

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

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

????///?<summary>
????///?天氣請求結(jié)果Json對象????///?</summary>
????public?class?BaiduWeatherResult?:?BaiduResult
????{????????///?<summary>
????????///?天氣預(yù)報信息????????///?</summary>
????????public?List<BaiduWeatherData>?results?=?new?List<BaiduWeatherData>();
????}????///?<summary>
????///?城市的天氣信息????///?</summary>
????public?class?BaiduWeatherData
????{????????///?<summary>
????????///?當(dāng)前城市????????///?</summary>
????????public?string?currentCity?{?get;?set;?}????????///?<summary>
????????///?天氣預(yù)報信息????????///?</summary>
????????public?List<BaiduWeatherJson>?weather_data?=?new?List<BaiduWeatherJson>();
????}????///?<summary>
????///?天氣預(yù)報的單條記錄Json信息????///?</summary>
????public?class?BaiduWeatherJson
????{????????///?<summary>
????????///?天氣預(yù)報時間????????///?</summary>
????????public?string?date?{?get;?set;?}????????///?<summary>
????????///?白天的天氣預(yù)報圖片url????????///?</summary>
????????public?string?dayPictureUrl?{?get;?set;?}????????///?<summary>
????????///?晚上的天氣預(yù)報圖片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)建返回給客戶的圖文數(shù)據(jù),我們需要構(gòu)建一個News對象,然后生成XML數(shù)據(jù)返回給服務(wù)器進行處理即可。

????????///?<summary>
????????///?響應(yīng)用戶請求,并返回相應(yīng)的XML數(shù)據(jù)????????///?</summary>
????????///?<param name="info">微信基礎(chǔ)信息</param>
????????///?<param name="location">地理位置:經(jīng)緯度坐標或者地名</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ù)報",?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;
????????}

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

C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用 ? ?C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用

C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用 ?C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用

C#開發(fā)微信門戶及應(yīng)用-使用地理位置擴展相關(guān)應(yīng)用

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


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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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