Windows phone北京地鐵軟體的實現

來源:互聯網
上載者:User

北京的地鐵線路又增加了幾條,無奈windows phone的軟體更新實在不給力,很多線路都沒有。那隻能自己做一個了。做好的效果如下圖:

軟體說明:

開發工具:visual studio 2010 其中彈出框用了Codig4Fun第三方控制項。

支援拖拽地圖位置、查詢網站位置、查詢所有線路和所有網站、縮放地圖大小等功能。

地鐵的線路及網站資訊存放在XML檔案中,若增加了新的線路,則在XML中增加新線路及所有網站資訊即可,軟體可自動在介面中畫出新的線路。

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

主要代碼說明:

1.XML檔案:<Lines>節點聲明了所有的地鐵線路及顏色,<Nodes>包括網站名稱、網站座標、所屬線路資訊。

<SubWay>  <Lines>    <Line Name="1號線" Color="255, 255, 0, 0"  />    <Line Name="2號線" Color="255, 0, 104, 183"  />    <Line Name="4號線" Color="255, 0, 255, 255"  />    <.....>  </Lines>  <Nodes Name="4號線">    <Node Name="安河橋北" X="-15" Y="450" LineName="4號線">    </Node>    <Node Name="北宮門" X="50" Y="450" LineName="4號線">    </Node>    <Node Name="西苑" X="115" Y="450" LineName="4號線">    <.....>  </Nodes Name="4號線"></Lines>

2.資料的讀取:

顏色的讀取:

/// <summary>        /// 將Xml中的Color的字串描述轉換為Color類型        /// </summary>        /// <param name="s"></param>        /// <returns></returns>        public Color GetColor(string s)        {            byte b1 = byte.Parse(s.Split(',')[0]);            byte b2 = byte.Parse(s.Split(',')[1]);            byte b3 = byte.Parse(s.Split(',')[2]);            byte b4 = byte.Parse(s.Split(',')[3]);            Color myColor = Color.FromArgb(b1, b2, b3, b4);            return myColor;        }

網站資訊的讀取:(用了Linq,其中SubNode為網站類,包括網站名稱Name,網站座標Point,網站所屬節點LineName)

//擷取網站集合                    var nodes = from s in root.Elements("Nodes").Elements("Node")                              select new SubNode                                                            {                                  Name = s.Attribute("Name").Value,                                  Point=new Point(double.Parse( s.Attribute("X").Value),double.Parse( s.Attribute("Y").Value)),                                  LineName=s.Attribute("LineName").Value                              };                        ListSubNode = nodes.ToList<SubNode>();

3.查看所有線路及其包含的網站:這裡將地鐵集合與控制項進行了綁定,並且顯示資訊為網站名稱

<ComboBox x:Name="cobLine" ItemsSource="{Binding}" Margin="12,12,295,29" SelectionChanged="cobLine_SelectionChanged">            <ComboBox.ItemTemplate>                <DataTemplate>                    <TextBlock Text="{Binding Name}"></TextBlock>                </DataTemplate>            </ComboBox.ItemTemplate>        </ComboBox>

最後:

軟體還有很多不足之處,由於時間倉促很多地方的實現方法並不是很好,比如彈出表單搜尋網站中我想使用AutoCompleteBox實現智能提示,但受Codig4Fun控制項的限制效果並不好(這個我放在了"設定"中);縮放地圖後再查詢某個網站定位會不準確;沒法根據布局單獨設定某個網站名稱的顯示位置等

代碼下載:http://files.cnblogs.com/infly123/PhoneSubWay.rar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.