由于GPS全球定位系统的发展,大部分的快递系统都使用了GPS以便于及时得知当前运送货品以及车辆的位置,并在地图上以直观的形式展示出来。具备这样功能的快递系统在市场中更具有竞争力。刚好公司的一个项目中使用到了类似这部分的功能,领导把这个任务指派给了我,并限定5个工作日把这个事情搞定,5个工作日并非是完全的八个小时都能在这个上面工作。关于公司其他软件的问题,大部分都需要我关注,在这样的境况下,设计的质量和程序的质量都需要打一些折扣,因此如果下面都考虑不当的部分,请各位同仁指正。
程序中使用的地图是静态的,经由电子地图录屏得到,客户的要求是能够展示,这个是前提,因此决定了程序的精确程度这么低就可以满足。在地图上需要画出一个车辆从一个城市出发,经过一系列的线路到达另外的城市,同时也需要经过铁路,航空,海运这些线路。在图片上以动画的形式描述运输过程,考虑到任何一个线路中都会有许多点,这些点决定了整个线路,以动画的形式展示运输过程需要根据两点之间的连线作为线路,那么如何得到这些点的坐标就成了解决问题的重点。根据以上考虑,需要开发一个小的软件以辅助得到这些点。这个软件的功能需要包括:在不同的图片之间进行切换,在图片上描点并串成线,对图片上的点的位置进行调整,为线路命名,保存线路,加载线路,根据图片查询关于这个图片的所有线路等。存储的点仅对于这个程序有效,数据量也不大,因此使用XML存储是比较便捷的。下面介绍详细的设计。
基于以上的分析,可以根据GRASP法则设计类,给类非配职责,设计XML的结构。这个问题的核心是线路,因此需要设计一个代表线路的类,命名为Route,Route应该能记录线路的唯一标识id,以便于根据线路的id得到线路的所有信息,线路的名称name,线路使用的地图的名称imageName,该线路上使用的交通工具vehicle(火车,货车或者飞机),以及该线路上所有的点的集合stones,使用的地图的名称为图片的名称,程序在指定的位置获取gif或者jpg图片供使用时选择,vehicle也是同样的道理。
Route类(图1)
线路上的所有的点需要使用一个类来描述,命名为Stone,该类需要记录点的x坐标和y坐标,该点的ID,ID在该条线路上必须唯一,点的名子,代表城市的名字,或者某个地点的名字,该点的描述,该点的其他信息。Stone类在每次画图的时候都需要进行重画,因此需要在Stone类中设计该节点应该如何在图上展示,其中的PaintElement方法用来实现这个功能,其中的第二个参数是用来决定是否画被选中状态的边框。如果当前的节点被选中,那么需要在圆点的周围画一个边框。
Stone类(图2)
存储和获取所有线路需要一个类,命名为RoutesAdapter,其职责是向XML写入所有的线路,从xml中加载所有的线路,暂存所有的线路,根据线路的id获取对应的线路,根据图片的名称获取该图片上对应的所有线路。剩下的工作就要交给UI来处理了下面介绍UI的设计。
RouteAdapter类(图3)
使用javax的Swing相关的类进行处理需要进行详细的规划,可以借助于JBuilder等可视化的图形工具来辅助生成相应的代码,由于作者喜欢完全控制所有的类,因此没有使用工具辅助生成,而是自己设计了类组合关系。首先需要一个JFrame来显示整个应用程序,在应用程序的顶部使用一个工具条,他属于JPanel的子类,在下面的地方使用一个JScrollPane包含一个JPanel的子类,命名为工作区WorkArea,在工作区中保存了显示该工作区的相关信息,如下图所示,在顶部的工具栏中有下拉框,选择下拉框中的图片可以切换图片,并更新相应的线路下来框,选中一个线路可以在图上画出线路所有的线路。点击画图按钮可以在图上描点,点击调整按钮可以在图片上拖动以改变点的位置,暂存按钮把图片上的点以及工具栏上的信息保存为一个Route,存放在缓存中,同时更新线路下拉框并清除图上的所有点。点击保存按钮可以把所有的线路保存在XML中。图中节点的信息通过在节点上点击右键,弹出的模式对话框中进行设置,
使用界面(图4)
属性对话框图片。(图5)
使用的情形可以描述为,如果某一个订单在一个车中,订单的路线为A-B-C-D-E,终点为E,B,C,D为经过的路线,通过GPS定位系统得知当前的货车已经到达D点,便可以在图上标识出A-B-C-D的路线为绿色,剩余的路线为红色,这样便达到了直观的效果。如图所示
便可以达到目的。
如果需要小车在线路上跑,则需要一个线程,每经过一段时间进行一次刷新,同时在图中的线路上画出车的位置。需要详细了解程序请看源代码。源代码下载之后需要设置JDK1.5以上,双击start直接启动程序。如果有需要帮助请直接联系我。
作者简介:凌辉 北京******发展有限公司  软件开发部 项目经理,数据库方向研究生学历,设计开发过多个J2EE应用程序,有丰富的软件开发、管理、测试经验,擅长网站应用程序开发,在设计模式,软件重构,版本控制,软件保护,数据库设计与管理等方面都有独特的见解。
联系方式:QQ:21731278 msn:[email]lili00okok123@hotmail.com[/email]

附件:http://down.51cto.com/data/2350528

本文转自凌辉博客51CTO博客,原文链接http://blog.51cto.com/tianli/97092如需转载请自行联系原作者

lili00okok

GPS实时跟踪程序模拟相关推荐

  1. GPS实时跟踪程序模拟(2)动画回放

    上一篇文章介绍了实时跟踪程序中画点的操作,在这里介绍如果实现程序跟踪的动画回放.实现动画回放的基本原理是不停的刷新JPanel,在每次刷新的过程中,把图片画在相邻的位置便可以实现动画的效果.      ...

  2. 使用GPS实时记录运动路线

    使用GPS实时记录运动路线,没有经过真机测试但是理论上应该没问题 等有流量后进行一下性能测试 主要思路就是使用list实时记录运动坐标 , 继承 Overlay,并重写draw方法,在draw方法中通 ...

  3. php 安卓实现实时导航,用安卓平板电脑轻松实现GPS实时导航

    [IT168 应用]不少朋友都在用Android(安卓)系统的平板电脑,除了上网冲浪.看电影.玩游戏,有些平板电脑还内置GPS功能或可以外接GPS模块,我们可利用平板电脑实现GPS实时导航.位置定位, ...

  4. 测试地图长度和高度软件,‎App Store 上的“海拔测量仪-集指南针和GPS实时高度测距仪二合一”...

    海拔测量仪是一款外出旅游.户外达人必备的APP,拥有非常强大和准确的GPS定位功能,让你以最快的速度准确实时的获取到当前位置的的海拔.GPS位置.气压.经纬度坐标等信息,并且还内置指南针功能,这将是您 ...

  5. GPS实时定位、获取基站信息

    好久没有来更新我的博客了 , 最近刚做了一个GPS实时定位和获取基站信息的一个小的Demo ,这个辛酸泪啊- 来给大家们来分享一下 ! 做这个项目我用的是用的原始的手机GPS定位, 因为这个有可能需要 ...

  6. 京沪高铁上火车位置的实时监视模拟网站的开发

    因为本人从小就对地理很痴迷,经常看地图,而且对火车有一种很特殊的感觉.以前吧,从影视作品中也经常看到在一个指挥室里面,工作人员可以时刻的监视火车运行的状态和位置,所以呢,我也打算做一个仅仅针对京沪高铁 ...

  7. android位置服务与GPS实时定位工具类

    一.概述 据专家说:人类活动80%的信息与空间位置信息有关,这还真不是专家吹牛.举个例子:你跟女神约饭,你得知道女神在哪里吧?你们选择约在哪里的餐厅最合适?你们过去分别有多远?你们怎么过去?--总结起 ...

  8. java读取gpx文件格式,GPX文件格式适用于GPS定位的模拟以及生成文件

    中国广东省深圳市南山区南海大道3688号深圳大学 邮政编码: 518060 MyGeoPosition.com http://mygeoposition.com gpx是一种xml格式的文件,是用来给 ...

  9. Android全球定位系统GPS实时获取位置-刘宇

    GPS是全球定位系统,他能够获取到你当前的位置.方向.速度.高度等信息,这样可以帮助我们实现很多功能,如获取当前位置等信息.距离计算.邻近报警等功能.下面我就带大家一起来简单实现第一个功能获取当前位置 ...

最新文章

  1. request.getparameter特殊字符变成?号问号_15 个不可不知的 Linux 特殊字符,你懂几个?...
  2. 浪潮存储linux登录密码,登录存储系统CLI管理界面(用户名+密码)
  3. 一个资深技术人的转型之路
  4. 浅谈FIle协议与Http协议及区别
  5. 【MATLAB】变量 ( 特殊变量和常量 | 关键字 | 调用优先级 | 数值显示格式 )
  6. Excel宏的易错点
  7. 在VS2003下把一个DataTable Update 到数据库
  8. python之各种装饰器的使用
  9. 简单理解盘索引地址的表示原理
  10. 《CLR via C#》读书笔记 之 泛型
  11. 新技能 get —— 如何校验 md5(windows)
  12. 第1天学习打卡(Javaweb 邮件发送:原理、发送简单文本邮件、发送带图片和附件邮件、网站注册发送邮件Servlet实现)
  13. ntfs磁盘格式是什么?NTFS如何读写Mac硬盘?
  14. hdu2458 2010.3.6
  15. 怎样给电脑文件夹批量快速重新命名?
  16. Windows10切换屏幕
  17. 《流浪地球》程序员破解行星发动机到底靠不靠谱
  18. 三星GT-S7572换屏幕教程
  19. INFO: Attempting to connect to: http://192.168.xx.xx:8080/v1 ERROR: http://192.168.xx.xx:8080/v1 is
  20. QT 中用代码执行命令行清空Linux系统垃圾箱Trash

热门文章

  1. Eureka设置账号密码
  2. ns3入门(1)——第一个案例first.cc
  3. 过早死亡的工人所造成的接触石棉和间皮瘤
  4. java程序集成微信公众号模板消息功能
  5. 如何停止重启启动Redis服务
  6. 京东自媒体平台京东号正式上线!
  7. 【一天一个Python小案例】RGB图转简笔画
  8. 测试gym的cartPole 出错后的更改
  9. 放开那三国3服务器维护,放开那三国3渠道服
  10. 学习记录:关于如何安装EndnoteX9以及汉化过程