欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

微信開發(fā)之如何使用地理位置擴(kuò)展-創(chuàng)新互聯(lián)

這篇文章主要介紹了微信開發(fā)之如何使用地理位置擴(kuò)展,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站基于成都重慶香港及美國(guó)等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動(dòng)大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)四川電信科技城機(jī)房報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。

1、微信的地理位置信息

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

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

地理位置的上報(bào)操作,就是在輸入的地方,選擇+號(hào)進(jìn)行添加地理位置,然后選擇當(dāng)前或者指定的地理位置地圖,具體操作如下所示。

微信開發(fā)之如何使用地理位置擴(kuò)展                微信開發(fā)之如何使用地理位置擴(kuò)展

地理位置消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[location]]></MsgType>
<Location_X>23.134521</Location_X>
<Location_Y>113.358803</Location_Y>
<Scale>20</Scale>
<Label><![CDATA[位置信息]]></Label>
<MsgId>1234567890123456</MsgId>
</xml>
參數(shù)描述
ToUserName開發(fā)者微信號(hào)
FromUserName發(fā)送方帳號(hào)(一個(gè)OpenID)
CreateTime消息創(chuàng)建時(shí)間 (整型)
MsgTypelocation
Location_X地理位置維度
Location_Y地理位置經(jīng)度
Scale地圖縮放大小
Label地理位置信息
MsgId消息id,64位整型

有了上面的地理位置信息,我們?cè)诔绦蚶锩?,需要在消息傳遞過(guò)來(lái)的時(shí)候,定義一個(gè)實(shí)體類信息,承載相關(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; }
    }

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 = "";

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

            return xml;
        }

在處理的時(shí)候,我們需要先保存用戶的地理位置信息,把它存儲(chǔ)到用戶的上下文記錄里面。這樣我們?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ì)用戶地理位置的請(qǐng)求,我根據(jù)數(shù)據(jù)庫(kù)配置給出了一個(gè)用戶選擇的指令提示,如下所示。

微信開發(fā)之如何使用地理位置擴(kuò)展

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

微信開發(fā)之如何使用地理位置擴(kuò)展

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

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

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

微信開發(fā)之如何使用地理位置擴(kuò)展

微信開發(fā)之如何使用地理位置擴(kuò)展

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

剛才說(shuō)了,我配置了一些指令,用來(lái)構(gòu)建相關(guān)的應(yīng)用,指令的最后是一些事件代碼的定義,我們對(duì)這些末端的事件代碼進(jìn)行處理,就可以給用戶返回相關(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://api.map.baidu.com/telematics/v3/weather?location={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)存儲(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)建返回給客戶的圖文數(shù)據(jù),我們需要構(gòu)建一個(gè)News對(duì)象,然后生成XML數(shù)據(jù)返回給服務(wù)器進(jìn)行處理即可。

/// <summary>
        /// 響應(yīng)用戶請(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)了整體的功能了,具體界面功能可以訪問(wèn)我的微信(廣州愛奇迪)進(jìn)行了解,下面是功能截圖供參考。

微信開發(fā)之如何使用地理位置擴(kuò)展  微信開發(fā)之如何使用地理位置擴(kuò)展

微信開發(fā)之如何使用地理位置擴(kuò)展微信開發(fā)之如何使用地理位置擴(kuò)展

微信開發(fā)之如何使用地理位置擴(kuò)展

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“微信開發(fā)之如何使用地理位置擴(kuò)展”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

名稱欄目:微信開發(fā)之如何使用地理位置擴(kuò)展-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://aaarwkj.com/article16/geddg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站策劃、域名注冊(cè)、靜態(tài)網(wǎng)站微信公眾號(hào)、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
国产美女冒白浆视频免费| 秒播视频午夜福利在线观看| 高清欧美大片免费观看| 在线播放精品免费不卡| 中文字幕不卡一区在线| 一区二区三区av夏目彩春| 亚洲一区二区三区日韩精品| 亚洲视频在线男人天堂| 亚洲天堂成人av蜜臀| 国产亚洲香蕉精彩视频| 日本一二三四卡久久精品| 伦理中文字幕一区二区| 国产午夜在线观看免费视频| 亚洲丰满一区二区三区在线| 欧美成人精品视频在线不卡| 欧美十八一区二区三区| 日韩欧美亚洲视频另类| 国产极品嫩模在线观看91 | 一区二区先锋深夜中文字幕| 人人妻人人澡人人爽人人精品| 国产免费av高清在线| 欧美在线免费黄片视频| 日本亚洲美丽少妇天堂| 九七青青草视频在线观看| 亚洲高清成人综合网站| 精品福利视频一区二区| 真实夫妻露脸爱视频九色网| 人妻少妇中文字幕在线播放| 国产情色自拍在线观看| 深夜毛片一区二区三区| 久久久精品国产亚洲av色哟哟| 亚洲巨人精品福利导航| 国产在线精品91国自产拍| 亚洲精品不卡一二三区| 亚洲美女插入av网络导航| 丰满人妻一区二区三区免费| 九九视频精品免费高清视频 | 亚洲精品午夜在线观看| 国产av网站精品成人| 亚洲欧美一区二区三区日本| 亚洲欧洲精品真人av蜜臀|