您的位置:首页 > 其它

Windows phone 北京地铁软件实现

2013-05-25 21:30 239 查看
北京的地铁线路又增加了几条,无奈windows phone的软件更新实在不给力,很多线路都没有。那只能自己做一个了。做好的效果如下图:

代码下载:http://files.cnblogs.com/infly123/PhoneSubWay.rar



软件说明:

开发工具:visual studio 2010 其中弹出框用了Codig4Fun第三方控件。

支持拖拽地图位置、查询站点位置、查询所有线路和所有站点、缩放地图大小等功能。

地铁的线路及站点信息存放在XML文件中,若增加了新的线路,则在XML中增加新线路及所有站点信息即可,软件可自动在界面中画出新的线路。

主要代码说明:

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控件的限制效果并不好(这个我放在了"设置"中);缩放地图后再查询某个站点定位会不准确;没法根据布局单独设置某个站点名称的显示位置等

本人大四,热爱编程,欢迎.net及其他方向的程序员一起交流一起进步,欢迎加我qq:1241311001
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: