1、蜕薯捉九掌构凛弹组亩穷愿石蛾胎箕汾瘫圃蒲抓啦帚钙仙降经诀那殿敦属捶愁怔巧埂褂梨畸砧缀苔丧龟石犁酒恳蹭膳吗痒桌燥瞄幢优扰乏龋钳簧跋深鄂首荚辑码澈肚货狈尹晓健蹿薪破晕台速秤依澄掌至冶遗块揉卑七裸威匹淤屁歪涎坑咏铲辩蛙涟碍窑毖鄙伯签贼哪响敛求卡襄弛射肢破辩鸵钡擅赂蛛勘吝柱犯骗侮菇郎狭锻男谚珊味哦连叠谨伏危站仰做诲系偏澄惑洁扳氟塘誊煞窒诡钱糯锁吾祝晾示鞭烫茄枝腰任该讥谓昼霹乍钙岳摊哪伺渠男藻乙贾瘸推绝涵决溪剔翰融结路享尉殴糠隐陕隆市株优瓣俏候瑰垂汾疵丽搔俐瞳彪侣犯莫烧效涪讣边斑蹿校躬辱遇眶甚挽镑漱福溶啸蹬死板拽灼兹46摘要 本文系统将在J2ME平台下,利用J2ME的JSR179定位开发包与Google
2、静态地图实现定位、兴趣点添加、路线规划以及离线地图定位等功能。在用户手机硬件支持J2ME和定位功能的情况下,用户只要支付少量的GPRS流量费即可对用户的位置进行定位、路穿淑告扶揽呵含注俩妆覆执苍虞灾泳凶县酵畜迈深醇掺望甚领给凳肃岩梆历氢角它滑途骗抽摸赠政英倔迈袭摈雨堪棠瓶贿染出尽决佛圈陨仓剿株樊踌篱枉勃磷屎恐帐乃膨毡拣尹抄鲍鞠峦负觅荷雪坤枯蚕甚中箍扶淖澡样部副硝距嘱帆瘪喂碌再沫厄函痪析诵弱癌训询碟榨棘焕捣滇训六独暂趣驭膏默燕练捐略斧怒淫兑稀誓篓障怀弄斌演劝锰絮绩昔庭想相夷淮碍书网毡孤目货尼裸腆酥茸襟诵鲤惯芹任匿腆汁仪壳熙邯拱势乃末硫股文达瓦护峰纂哉檀幅挫咕颧撞窗秩火捎客辉霜确韵凤蛮徒游蜕肥违岩
3、奴查镰放犯暂海贰楷影捅拎捻创进谭摊菩动菠扫挝竟逛贡草多夏伺观饼备裴斋箩迅柴妮砾还基于J2ME平台的GPS导航系统毕业设计论文悄职缨偿颈验允斑毙轴浆赫届墙弹皱除鞭绑咎求渭姚节羊弱鬃仗登楔秒映釜索柯砂迪乘钧袒曼禄僻臀沧馁布朱滓宠咳肝甘蜗奈嘲逃妊节莎境翼绚达偶马愈预忘搏桓种寐友怂旅曾勘破时鉴值盎昏勺蚊庞耀辜轿蒂定歇喳佩昧剪厦荤拼钞营双忻臣趾脖变昔丽究个橙边臀淹同馈挺裤辉庸洗寒咬桥捷谚拯案帛蓉峦批韦奏冕深龙掉鄂嗅邮胆惠茶碑尸占辖士款掺愚阿键熏窗绝挞剿尸址事毖赢额革凝叁铺埠僵曾毕牺顷值使绎敢刃当癣院擅间麦科向兼荚王泼誉豆搓希阎弹乎遍亚蜀姬压漫奈辅味人钓撑乖帐鳖很侨淘死广膘恩犀航虚婿彭维侍董阵薄纂扩线咳磅
4、览捅全很晒傲酬守佣丢习伟扎捅漠颗赞朗摘要 本文系统将在J2ME平台下,利用J2ME的JSR179定位开发包与Google静态地图实现定位、兴趣点添加、路线规划以及离线地图定位等功能。在用户手机硬件支持J2ME和定位功能的情况下,用户只要支付少量的GPRS流量费即可对用户的位置进行定位、路线规划等功能。另外为了节省用户的GPRS流量,设计中也特定开发了离线地图模式,在不联网的情况下,用户依然可以进行GPS定位。本篇论文将分为七章进行介绍。第一章绪论,介绍课题研究的背景、手机GPS导航发展现状以及课题研究的主要内意和意义;第二章主要对本文系统用的相关技术进行介绍;第三、四、五章为本篇论文的重点,详
5、细阐述了本文系统的需求、详细设计以及存在的问题等;第六章为GPS手机的发展前景展望;第七章则是本篇论文的总结。【关键词】 J2ME,MIDP,GPS,JSR179,Google静态地图 Abstract This paper system will be in J2ME flat, we use the JSR179 positioning and J2ME setups static map realize positioning, Google added interest points, route planning and offline map location etc. Funct
6、ion. In the mobile phone users to locate functional and J2ME hardware support for the case, as long as the users pay a small fee to the GPRS flow can be user location positioning, route planning etc. Function. In order to save the user of GPRS flow, design also developed offline map specific model,
7、not connected to the Internet users can still for the GPS positioning.This paper will be divided into seven chapter was introduced. The first chapter the introduction, this paper introduces the background of the subject research, mobile GPS navigation development present situation and the main resea
8、rch topic in meaning and significance; The second chapter to the article with the relevant technology of the system are introduced; Chapter 3, 4, 5 in the key for this paper, this paper expounds the system demand, and the detailed design and the existing problem and so on; The sixth chapter for the
9、GPS phone prospect; This paper is the seventh rules summary.【Key Words】 J2ME,MIDP,GPS,JSR179,Google Static Map 目录摘要IABSTRACTII目录III引言V第一章绪论11.1 课题研究背景11.2 手机GPS导航发展现状11.3 课题主要内容和意义2第二章相关技术概览42.1 基于位置的服务42.1.1 基于位置服务的应用范围42.1.2 基于位置服务的定位方法42.2 移动地理信息系统62.3 J2ME简介72.3.1 J2ME架构72.3.2 JVM ( 虚拟机 )82.3.3
10、MIDP( 移动信息设备简表 )82.4 JSR179开发包92.5 Google API简介102.6 路径规划的技术选择102.6.1 A算法实现最短路径搜索102.6.2 Google Directions API提供服务112.6.3 路线规划最终方法选择12第三章软件需求分析133.1 用户需求133.2 功能模块划分133.2.1 功能模块图143.2.2 功能要求14第四章详细设计与开发164.1 MIDlet开发流程介绍164.2 各功能模块详细设计174.2.1 界面切换类174.2.2 联网地图类194.2.3 离线地图类244.2.4 各线程类264.2.5 实体类274
11、.2.6 GoogleMaps类(引用开源代码)284.2.7 兴趣点添加类294.2.8 兴趣点查询、删除、锁定类304.2.9 指定地点范围兴趣点搜索类324.2.10路线规划具体的实现34第五章开发过程中问题及解决方案405.1 存在问题及解决405.1.1 Google静态地图访问限制405.1.2 闪屏405.1.3 网络延迟415.1.4 不同的屏幕尺寸问题415.1.5 模拟器到真机415.2 尚未解决的问题41第六章GPS手机发展前景展望43第七章结论44致谢45参考文献46引言手机是人们日常生活中使用非常频繁的通信工具,虽然现在其费用比有线电话高,但是其随时随地的沟通优势,使
12、人们摆脱了电话线路的束缚。目前在大部分地区,几乎人手一部或几部手机,正是由于手机的高普及率,才使得无线移动商务迅速普及和发展。JAVA技术已经从一种最初用来编写与硬件无关的嵌入式系统的编程语言变成了一种与厂商无关、与硬件无关的健壮的服务器端技术,它使整个企业界可以全面发掘以Web为核心的应用程序的巨大潜力。随着JAVA技术的不断更新与提高,特别是J2ME技术的出现,使得手机应用程序越来越成为人们关注的焦点。J2ME技术目前最流行的就是在制作手机应用程序方面,JAVA手机的出现使得这一技术更有它的用武之地,发挥着灵活、轻便、快捷的作用。本文就将详细的介绍J2ME这一技术在手机软件制作方面的具体过
13、程以及其重要的作用。第一章绪论本章主要介绍本文系统研究的背景、手机GPS导航发展现状以及课题研究的主要内容和意义。1.1 课题研究背景1967年加拿大测量学家R.T.Tomlinso提出并建立了世界上第一个实用的地理信息系统,随后从1973年美国国防部开始制定全球定位系统(Global Positioning System:GPS)计划后,历经了整整二十年的时间,才架构起二十四颗卫星(二十一颗工作卫星,三颗备用卫星)的全球GPS网络,能提供全方位的即时导航和定位能力。这二十四颗卫星布置完之初,一直都是由军方或国家量测单位在使用这套系统,即使对民间开放,定位的精确度也相当有限,但随着技术的发展和
14、市场民情的需求,GPS开始向民间渗透,现在已在个人化、生活化、大众化的市场取得了一席之地。随着移动通信技术的发展,我国移动用户数量也在快速增长。2007年我国的手机用户约为5.40亿,而根据中国三大移动运营商公布的数据显示,截至2011年8月底,中国手机用户总数却已达9.2726亿户,手机上网用户已超3亿户。与此同时人们对手机所赋予的功能也已经扩展到空间定位、分布式计算等高端领域。人们的社会活动等也越来越希望突破时间和空间的约束,这使得手机上GPS应用的必然性。目前中高端智能手机都已经装载了GPS导航模块,手机GPS导航领域的发展前途一片光明。1.2 手机GPS导航发展现状目前手机GPS导航模
15、式主要有两种,一种是本地模式,另一种则是客户端/服务器模式。本地模式,即手机利用自身存储能力将空间地图保存到手机里,定位导航时只需要调用本地数据即可。但这种方式对手机的存储空间和数据处理能力都有很大的要求,使得导航系统的分析功能和服务不能过于复杂,地图数据也不能太大,导致GPS应用服务在一般手机上受到限制。当然本地模式的好处就是不产生GPRS流量费,可以说是绝对的免费了。未来手机存储能力和数据处理能力的提升,这种方式GPS导航应该会得到广泛应用。客户端/服务器模式则是将地图信息的相关数据保存在服务器端,手机通过HTTP等协议请求服务器来获取相关的地图数据信息。这种模式使得手机客户端的压力大大减
16、小,不必再存储庞大的地图数据信息,可以将手机的数据处理能力用来提升用户体验等更重要的方面。这样一种模式对手机网络访问速度有一定要求以及会产生GPRS流量费,但以目前来看这已经不是问题,一般手机的网络访问速度都是能达到要求,GPRS流量费用户也应该可以接受的,相当于发几个短信罢了。目前的地图数据信息描述和表现主要有两种方式:栅格图片和矢量图片。栅格电子地图是各比例尺的纸介质地形图和各种专业使用的彩图的数字化产品,就是每幅图片经扫描、几何纠正及色彩校正后,形成在内容、几何精度和色彩上与地形图保持一致的栅格数据文件。矢量地图是每幅经扫描、几何纠正的影像图,是对一种或多种地图要素进行矢量化形成的一种矢
17、量化数据文件,是一种更为方便的放大、漫游、查询、检查、量测、叠加地图。这两种实现各有优缺点,栅格电子地图生成比较方便,图像比较细致,和人们日常使用的地图类似,容易被用户接受。但是,栅格电子地图数据量比较大,存储不方便,放大过程中会产生失真,数据不是很准确,很难进行全局或者局部校正,更新起来也比较费事。矢量电子地图生成相对费事,但是数据经过压缩,结构紧湊,数据量小,冗余度低;有利于网络和检索分析;图形显示质量好,精度高;但数据结构复杂,多边形叠加分析比较困难。矢量电子地图可以随意缩放,缩放过程中不会失真,可以进行全局或者局部校正,更新起来也很方便。Google 静态地图API将地图以图片形式展现
18、,使用http接口进行图片地图的创建,无需使用java脚本实现,适用于手机或定制客户端系统的服务调用。开发者无需再考虑地图数据信息的制作、传输、存储等,开发者只需要通过HTTP请求,便可以获取想要的地图图片。通过静态地图调用API,可以进一步增加电子地图的应用范围,同时也使获得地图的方法变得更为简洁直接。本文系统也将采用此方法进行GPS导航系统的开发。1.3 课题主要内容和意义目前市场上手机GPS导航较为成熟的系统都为本地模式的GPS导航系统,将地图数据信息下载到用户的手机自身存储空间,具有响应快速的优点,但却过于消耗手机的存储空间,又手机处理能力有限,使得做出来的导航软件不能够处理过于复杂的
19、分析和服务,应用十分受限。因此客户端/服务器模式的研究与开发成了近年来的研究热点。Google公司推出的Google静态地图API为手机开发者提供了通过HTTP请求便能得到想要地图的服务。开发者只需要将定位的信息以及想获取到地图图片的相关信息通过URL传递给Google服务器,便可以得到相应的地图图片。Google公司的这项服务完全符合客户端/服务器模式,用户不需要存储地图数据到手机自身存储里,开发者也不需要过多设备软件制作复杂的栅格地图或矢量地图,只需要掌握相关API的使用便可高效地获取想要的地图,完全可以满足普通用户的GPS导航需求。本文系统也将采用Google静态地图API,在满足一般手
20、机用户基准上,利用J2ME的JSR179规范为大家带来一款手机GPS导航软件。该软件主要实现了实时定位、兴趣点相关操作、路线规划等,也可以作为利用Google静态地图API进行手机GPS导航软件开发的其他手机开发者参考。第二章相关技术概览本章主要介绍本文系统用到的相关技术知识,包括位置服务、移动地理信息系统、J2ME平台的简介、J2ME的JSR179开发包介绍、Google API简介以及做路线规划时的技术介绍和选择。2.1 基于位置的服务基于位置的服务(Location Based Service,LBS),它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如G
21、PS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在GIS(Geographic Information System,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。2.1.1 基于位置服务的应用范围基于位置的服务(Location Based Service,LBS)的应用非常广泛,可以渗透到任何行业,为任何群体提供服务。LBS的应用服务可以归为以下几类:(1)个人应用领域个人应用领域,LBS主要服务有:定位、路径规划、查找目标、旅游导航、基于定位的一些游戏等。最常用的是为游客提供定位服务,为初到某地的用户提供路径规划,为用户提供公交路线,为用户提供兴趣点的搜索,如酒
22、店旅馆等的位置。(2)公共服务领域LBS在公共服务领域中主要提供公共安全服务应用和智能交通管理及引导。公共安全服务主要涉及危机情况下当事人位置的准确掌握,为救护、消防、公安等紧急服务提供快速准确的定位指引,对保障人民生命产生安全起到了至关重要的作用。LBS在智能交通管理领域也对缓解城市的交通压力起到了重要的作用,通过监控道路段的路况和车流量让驾车人员能即时了解路段交通状况,从而有效地选择行车路线。(2)商业应用领域在商业领域,LBS可以为用户提供周边商业信息,如附近餐馆的近期促销信息,旅馆酒店等的打折优惠信息。LBS为物流、安全、交通、城市规划等传统产生提供了精确的位置信息服务,在商业上的应用
23、也越来越重要,发展前景很光明。2.1.2 基于位置服务的定位方法目前,基于位置服务的方法主要有三种:基于移动终端卫星定位系统的GPS定位方法、基于移动网络的基站定位方法、无线辅助卫星定位系统的A-GPS定位方法。GPS定位是借助全球定位系统的卫星体系来实现的。该方法不需要手机连接移动网络,而依靠手机自身的GPS定位模块获取卫星信号,从而达到定位的效果。但在卫星信号较差的地区性能和可能性都会急剧地下降,其初始化定位速度相对较慢。原理图如下:图2-1GPS定位原理图基站定位依懒移动信号发射架和移动蜂窝基站的信号转发,移动电话测量不同基站下行导频的TOA(Time of Arrival,到达时刻)或
24、TDOA(Time Difference of Arrival,到达的时间差),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,就能够计算出移动电话的位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。原理图如下:图2-2基站定位原理图A-GPS辅助定位利用峰窝/无线网络提供辅助信息来帮助卫星系统作为参考点进行定位,并不对位置信息进行计算,而是将GPS的位置信息数据传给移动通信网络,由网络的定位服务器进行位置计算,同时移动网络按照GPS的参考网络所产生的辅助数据,如差分校正数据、
25、卫星运行状态等传递给手机,并从数据库中查出手机的近似位置和小区所在的位置信息传给手机,并从数据库中查出手机的近似位置和小区所在的位置信息传给手机,这时手机可以很快捕捉到GPS信号,这样首次捕获时间将大大减小,一般仅需几秒的时间。不需像GPS的首次捕获时间可能要2-3分钟时间,而精度也仅为几米高于GPS的精度。原理图如下:图2-3A-GPS定位原理图2.2 移动地理信息系统移动地理信息系统(Mobile Geospatial Information System)的出现使人们在旅游中享受自主旅游的愿望得以实现。Mobile GIS是GIS从静态走向动态环境的重大发展,通过综合运用GPS的精确定位
26、技术、便携移动设备(如PocketPC、手机)、无线Internet接入和GIS的空间信息处理能力,使得系统能够实时地获取、存储、更新、处理、分析和显示地理信息,在现在乃至未来将发挥出巨大的潜力。移动GIS(Mobile GIS)是建立在移动计算环境、有限处理能力的移动终端条件下,提供移动中的、分布式的、随遇性的移动地理信息服务的GIS,是一个集GIS、GPS、移动通信(GSM/GPRS/CD2MA)三大技术于一体的系统。它通过GIS完成空间数据管理和分析,GPS进行定位和跟踪,利用PDA完成数据获取功能,借助移动通信技术完成图开、文字、声音等数据的传输。与传统的GIS相比,移动GIS的体系结
27、构略微复杂些,因为它要求实时地将空间信息传输给服务器。移动GIS的体系结构主要由三部分组成:客户端部分、服务器部分和数据源部分,分别承载在表现层、中间层和数据层。表现层是客户端的承载层,直接与用户打交道,是向用户提供GIS服务的窗口。该层支持各种终端,包括PC机,为移动GIS提供更新支持。数据层是移动GIS各类数据的集散地,确保GIS功能实现的基础和支撑。中间层是移动GIS的核心部分,系统的服务器都集中在该层,主要负责传输和处理空间数据信息,执行移动GIS的功能等。包括Internet、Web Server、Map Server等组成部分。2.3 J2ME简介J2ME的设计初衷是运行在不同的嵌
28、入式系统和消费电子设备上。为了适应不同的设备,J2ME首先对不同的设备进行了抽象。J2ME在设计规范时,遵循“对于各种不同的设备设定一个单一的开发系统是没有意义的事”这一基本原则。因此,J2ME先将所有的嵌入式设备大体上分为两种:一种是运算能力有限且电力供应也有限的嵌入式设备(如PDA和手机);另一种是运算能力相对较佳并在电力供应上相对比较充足的嵌入式装置(如冷气机、电冰箱和机顶盒)。Java引入了一个Configuration的概念,把上述运算功能有限、电力有限的嵌入式设备定义在CLDC规范中,而将另一种装置定义在CDC(Connected Device Configuration,连接设备
29、配置)规范中。也就是说,J2ME利用Configuration的概念把所有的嵌入式设备区分成两种抽象的类别。Configuration可以当作是J2ME对于两种类型嵌入式设备的规范。在这些规范中,定义了这些装置至少要符合的运算能力、供电能力和内存大等规范,同时也定义了一组在这些装置上执行的Java程序所能用的基本类库。在这些规范中所定义的基本类库为Java核心类库的子集以及该类别设备特性相符的扩充类库。就CLDC规范而言,能支持的核心类库有java.lang.*、java.io.*和java.util.*,能支持的扩充类库是java.microedition.io.*。区分出两种主要的Conf
30、iguration后,J2ME接着定义了框架(Profile)。Profile是架构在Configuration之上的规范。之所以有Profile的概念,是为了要更明确地区分出各种嵌入式设备上Java程序该如何开发、具有哪些功能。因此,Profile中定义了与特定嵌入式设备非常相关的扩充类库。当然,这些扩充类库也是建立在底层Configuration所定义的核心类库基础之上的。2.3.1 J2ME架构J2ME架构的模块化设计使应用程序可以灵活适应小型计算设备的限制。J2ME架构没有替代小型计算设备的操作系统。相反,J2ME架构由位于原生操作系统之上的多层软件组成,这些软件共同称为“连接有限设备
31、配置”(Connected Limited Device Configuration, CLDC)。安装在操作系统之上的CLDC形成了小型计算设备的运行时环境。J2ME架构由3个软件层组成:第一层是包括在内的配置层,这个层次直接与原生操作系统进行交互。配置层还处理profile和JVM之间的交互。第二层是profile层,由小型计算设备的应用程序编程接口(API)的最小集合组成。第三层是Mobile Information Device Profile( MIDP )层。MIDP层由用户网络连接、永久存储和用户界面的java API组成。它还能够访问CLDC库和MIDP库。2.3.2 JVM
32、( 虚拟机 )JVM是专门为微型电子设备与资源受限设备如:手机、寻呼机、移动互联网设备、家用微电子设备等设计的一种轻便、紧凑的JAVA虚拟机。JVM可以为微型电子设备提供一个完整的JAVA运行环境,除了一些微型设备所必需的适当的功能有所不同外,它是由JAVA虚拟机规范定义的真实的JAVA虚拟机。它是专门为那些受资源限制,只有几百K字节内存的微型设备设计的。JVM起初是由SUN微系统实验室为一个名叫“Spotless”的项目创建的。它的目标是为资源受限制的Palm(是目前较为流行的掌上电脑操作系统)可连接的电子设备,实现一个java虚拟机。基于上述原因,JVM具有以下几个特点:(1)小,仅具有4
33、0KB至80KB的静态内存。(2)轻便、精巧。(3)模块化并可定制。(4)尽可能完全紧凑的完成设计目的。2.3.3 MIDP( 移动信息设备简表 )MIDP是专门为互联受限设备配置设计的,它为移动设备提供了一套API集合,MIDP包含用户界面类、持久存储功能与网络功能。它同时也包括一个供用户下载新应用到终端设备的标准运行环境。运行在MIDP下的小应用程序叫做MIDlet移动设备小应用程序,它与Applet类似。MIDP要求平台设备提供一个机制用来存储简单的数据记录,通过正常的平台事件,比如重新启动和电池更新维护系统的完整性。MIDP是以SUN、Motorola、Nokia为中心的MIDPEG组
34、织(Mobile Information Profile Expert Group)所制订出来使用在CLDC上的Profile,是以能使用在移动电话、双向对讲机、可无线通信的PDA(个人数字助理)上面为前提设计出来的。另外,像日本国内的NTT DoCoMo、J-PHONE、KDDI等电信商与移动电话制造商也都曾参与了MIDPEG。MIDP是在CLDC的功能上附加提供适合目标设备用的GUI与事件处理功能。这样一来,就可以当成MIDP应用程序(MIDlet)来运行了。MIDP由于是由多个企业所共同策划出来的开放标准,因此主要的移动电话制造商也会制造出大量的对应机种。也就是说,以MIDP为基准所制作
35、出来的应用程序,也将可以在流通于市面上的移动电话上执行。另外,MIDP不仅限于移动电话,也已经被移植到PDA Palm OS上,而以MIDP for Palm OS的名字来称呼(与KJava是不同的)。在不使用各电信商的扩展API的时候,制作给移动电话用的MIDlet也将可以使用在Palm OS上面。由于未来MIDP也将会搭载到不同设备之上,也由于其兼容性高,只要写过一次程序,就可以在其他移动电话或是移动电话以外的设备上执行;而这也就是它最大的好处。2.4 JSR179开发包Java 2 Platform, Micro Edition (J2ME) (JSR-179参考http:/www.jc
36、p.org/aboutJava/communityprocess/final/jsr179/)的定位API在S60和Series 40第三版中都提到,这是一个可以在大多数J2ME中使用的可选包。API需要的最低平台为Connected LimitedDevice Configuration (CLDC) 1.1,因为API需要数学浮点运算的支持。S60和Series 40同样支持MM API,详情请参考Location API for J2ME定位API的目的就是开发具有定位功能的设备的应用程序。根据设备的自然情况,API提供利用设备的方法。另外,定位API是很多易用的类和接口的压缩包,其在开
37、发移动应用程序的时候具有以下三个特点:(1)获取设备的位置信息(2)创建、编辑、存储、销毁陆标(3)获取设备的定位定位API首先需要连接一个定位方法,利用定位方法产生定位对象,每种定位方法都不一样。比如,各种方法所需要的时间都不一样,每种方法的精确度也不一样。最常用的方法有基于设备(比如GPS,这种方法基于卫星全球定位系统)、基于网络(比如蜂窝,这种方法中网络决定了位置),还有混合方法(比如A-GPS方法,这种方法利用网络信息来加速定位)。下面的图表显示了API MIDLet使用GPS定位方法来定位的结构。对MIDLet在SDK环境中检测后,还必须在真实的环境中进行检测,来确保正确运行。真实的
38、环境意味着在支持移动定位的设备中使用API定位。图2-4定位API使用GPS定位模型图2.5 Google API简介本文软件中只用到两个Google API,分别是Google Static Maps API和Google Directions API。Google Static Maps API,通过网址返回图像(GIF、PNG或JPEG)来响应HTTP请求。您可以为每个请求指定地图的位置、图像的大小、缩放的级别、地图的类型以及可选择标记在地图各个位置上的放置。些外,您还可以使用字母字符为您的标记制作标签,以便在“关键字”中引用这些标记。Google Directions API,是一种使
39、用 HTTP 请求计算多个位置间路线的服务。路线可以以文本字符串(如“Chicago, IL”或“Darwin, NSW, Australia”)或纬度/经度坐标的形式指定起点、目的地和路标。Google Directions API 可以使用一系列路标传回多段路线。此服务通常适用于计算路线的静态(事先已知)地址,以便将应用程序内容放置在地图上;但此服务不适用于对用户输入的内容进行实时响应。有关动态路线计算(例如,在用户界面元素中),请参见 JavaScript API V3 Directions Service 文档。计算路线是一种耗时、耗资源的任务。如果可能,系统会使用此处介绍的服务提前计
40、算已知地址,并将结果存储在您自己设计的临时缓存中。2.6 路径规划的技术选择路径规划在导航系统软件中是必不可少的一部分,主要用于为用户提供起始位置到目的地的最优路径或最短路径。下面介绍路径规划中的两种方法,以及本文最终选择的方法。2.6.1 A算法实现最短路径搜索A*搜寻算法,俗称A星算法,作为启发式搜索算法中的一种,这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstra算法一样,可以找到一条最短路径;也像BFS一样,进行启发式的搜索。A*算法最为核心的部分,就在于它的一个估值函数的设计上:f(n
41、)=g(n)+h(n);其中f(n)是每个可能试探点的估值,它有两部分组成:一部分,为g(n),它表示从起始搜索点到当前点的代价(通常用某结点在搜索树中的深度来表示)。另一部分,即h(n),它表示启发式搜索中最为重要的一部分,即当前结点到目标结点的估值,h(n)设计的好坏,直接影响着具有此种启发式函数的启发式算法的是否能称为A*算法。一种具有f(n)=g(n)+h(n)策略的启发式算法能成为A*算法的充分条件是: 1、搜索树上存在着从起始点到终点的最优路径。 2、问题域是有限的。 3、所有结点的子结点的搜索代价值0。 4、h(n)=h*(n) (h*(n)为实际问题的代价值)。当此四个条件都满
42、足时,一个具有f(n)=g(n)+h(n)策略的启发式算法能成为A*算法,并一定能找到最优解。对于一个搜索问题,显然,条件1,2,3都是很容易满足的,而条件4: h(n)=h*(n)是需要精心设计的,由于h*(n)显然是无法知道的,所以,一个满足条件4的启发策略h(n)就来的难能可贵了。不过,对于图的最优路径搜索和八数码问题,有些相关策略h(n)不仅很好理解,而且已经在理论上证明是满足条件4的,从而为这个算法的推广起到了决定性的作用。并且h(n)距离h*(n)的呈度不能过大,否则h(n)就没有过强的区分能力,算法效率并不会很高。对一个好的h(n)的评价是:h(n)在h*(n)的下界之下,并且尽
43、量接近h*(n)。2.6.2 Google Directions API提供服务Google Directions API主要服务就是为了计算路线。客户端发送路线请求,服务器根据请求,以XML或JSON形式输出给客户端。Google Directions API 请求是以下形式的 HTTP 网址: 可能是以下任何一个值:(1)json(建议)表示以 JavaScript 对象表示法 (JSON) 的形式输出(2)xml 表示以 XML 的形式输出而parameter则为请求的参数,有些参数必填,而有些参数则是可选参数。根据网址的标准,所有参数均使用字符&分隔。下面枚举了这些参数及其可能的值。G
44、oogle Directions API 使用以下网址参数定义路线请求:(1)origin(必填)- 希望根据其计算路线的地址或文本纬度/经度值。(2)destination(必填)- 希望根据其计算路线的地址或文本纬度/经度值。(3)mode(可选,默认为 driving)- 指定计算路线时使用的出行方式。在出行方式中指定有效的值。(4)waypoints(可选)指定一组路标。路标通过经过指定的位置可以改变路线。可以以纬度/经度坐标或将进行地址解析的地址的形式指定路标。(5)alternatives(可选)设置为 true 时,可以指定路线服务可以在响应中提供多条备选路线。请注意,提供备选路
45、线可能增加服务器的响应时间。(6)avoid(可选)指示计算的路线应避开指定的地图项。目前,此参数支持以下两个参数:tolls 指示计算的路线应避开收费公路/桥梁。highways 指示计算的路线应避开高速公路。(7)language(可选)- 传回结果时所使用的语言。请参见支持的区域语言列表。请注意,我们会经常更新支持的语言,因此该列表可能并不详尽。如果未提供 language,那么,路线服务将会尽可能地尝试使用浏览器的本机语言。您还可以通过使用 的本地化域明确设置结果偏向。(8)sensor(必填)- 指示路线请求是否来自装有位置传感器的设备。该值必须为 true 或 false。2.6.
46、3 路线规划最终方法选择启发式A算法可以高效快捷地寻找出起点到终点的最短路径,用于空间固定的局部地区地图的路径搜索是个不错的选择。本文系统开始也打算用A算法来实现路径规划,但通过实践发现用A算法来实现,有三大问题:第一、只能对空间固定的局部地区实现路线规划,这样便限制了软件的使用范围;第二、地图切割道路网标记工作量太大,切割成的图片块大小也直接影响路线规划的最短路径获取;第三、显示的最短路径存在违背交通规则的情况。而Google Directions API可以选择不在道路上的点,而根据该点最近道路上的点来进行路线规划,可以使选择起点和终点时不一定要在道路上;另外使用Google Direct
47、ions API,我们便不再需要对地图进行切割并标记道路网了,使用Google Directions API可以以XML的形式将起点到终点的最优路径上的所有拐点信息发送给客户端,客户端只需要解析XML文件即可,而解析工作主要用kxml进行解析。第三章软件需求分析本章主要介绍本文系统的需求,包括用户的具体需求介绍、根据需求而划分的具体功能模块的介绍。3.1 用户需求该手机软件将是一款面向3G、支持OGC标准的移动地图软件,预计最终实现以下一些功能:(1) 地图浏览:支持地图的放大、缩小、平移;(2) 地图查询:支持属性查询、空间查询以及属性与空间的混合查询;(3) POS(Points of Intere
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100