1、摘要 本文系统将在J2ME平台下,利用J2ME的JSR179定位开发包与Google静态地图实现定位、兴趣点添加、路线规划以及离线地图定位等功能。在用户手机硬件支持J2ME和定位功能的情况下,用户只要支付少量的GPRS流量费即可对用户的位置进行定位、路线规划等功能。另外为了节省用户的GPRS流量,设计中也特定开发了离线地图模式,在不联网的情况下,用户依然可以进行GPS定位。本篇论文将分为七章进行介绍。第一章绪论,介绍课题研究的背景、手机GPS导航发展现状以及课题研究的主要内意和意义;第二章主要对本文系统用的相关技术进行介绍;第三、四、五章为本篇论文的重点,详细阐述了本文系统的需求、详细设计以及
2、存在的问题等;第六章为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. Function. In the mobile
3、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, not connected to th
4、e 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 research topic in meanin
5、g 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 GPS phone prospect;
6、 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 MIDP( 移动信息设备简表 )82.
7、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.2.6 GoogleMaps类(引用
8、开源代码)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引言手机是人们日常生活中使用非常频繁的通信工具,虽然现在其费用比有线电话高,但是其随时随地的沟通优势,使人们摆脱了电话线路的束缚。目前在大部分
9、地区,几乎人手一部或几部手机,正是由于手机的高普及率,才使得无线移动商务迅速普及和发展。JAVA技术已经从一种最初用来编写与硬件无关的嵌入式系统的编程语言变成了一种与厂商无关、与硬件无关的健壮的服务器端技术,它使整个企业界可以全面发掘以Web为核心的应用程序的巨大潜力。随着JAVA技术的不断更新与提高,特别是J2ME技术的出现,使得手机应用程序越来越成为人们关注的焦点。J2ME技术目前最流行的就是在制作手机应用程序方面,JAVA手机的出现使得这一技术更有它的用武之地,发挥着灵活、轻便、快捷的作用。本文就将详细的介绍J2ME这一技术在手机软件制作方面的具体过程以及其重要的作用。46第一章绪论本章
10、主要介绍本文系统研究的背景、手机GPS导航发展现状以及课题研究的主要内容和意义。1.1 课题研究背景1967年加拿大测量学家R.T.Tomlinso提出并建立了世界上第一个实用的地理信息系统,随后从1973年美国国防部开始制定全球定位系统(Global Positioning System:GPS)计划后,历经了整整二十年的时间,才架构起二十四颗卫星(二十一颗工作卫星,三颗备用卫星)的全球GPS网络,能提供全方位的即时导航和定位能力。这二十四颗卫星布置完之初,一直都是由军方或国家量测单位在使用这套系统,即使对民间开放,定位的精确度也相当有限,但随着技术的发展和市场民情的需求,GPS开始向民间渗
11、透,现在已在个人化、生活化、大众化的市场取得了一席之地。随着移动通信技术的发展,我国移动用户数量也在快速增长。2007年我国的手机用户约为5.40亿,而根据中国三大移动运营商公布的数据显示,截至2011年8月底,中国手机用户总数却已达9.2726亿户,手机上网用户已超3亿户。与此同时人们对手机所赋予的功能也已经扩展到空间定位、分布式计算等高端领域。人们的社会活动等也越来越希望突破时间和空间的约束,这使得手机上GPS应用的必然性。目前中高端智能手机都已经装载了GPS导航模块,手机GPS导航领域的发展前途一片光明。1.2 手机GPS导航发展现状目前手机GPS导航模式主要有两种,一种是本地模式,另一
12、种则是客户端/服务器模式。本地模式,即手机利用自身存储能力将空间地图保存到手机里,定位导航时只需要调用本地数据即可。但这种方式对手机的存储空间和数据处理能力都有很大的要求,使得导航系统的分析功能和服务不能过于复杂,地图数据也不能太大,导致GPS应用服务在一般手机上受到限制。当然本地模式的好处就是不产生GPRS流量费,可以说是绝对的免费了。未来手机存储能力和数据处理能力的提升,这种方式GPS导航应该会得到广泛应用。客户端/服务器模式则是将地图信息的相关数据保存在服务器端,手机通过HTTP等协议请求服务器来获取相关的地图数据信息。这种模式使得手机客户端的压力大大减小,不必再存储庞大的地图数据信息,
13、可以将手机的数据处理能力用来提升用户体验等更重要的方面。这样一种模式对手机网络访问速度有一定要求以及会产生GPRS流量费,但以目前来看这已经不是问题,一般手机的网络访问速度都是能达到要求,GPRS流量费用户也应该可以接受的,相当于发几个短信罢了。目前的地图数据信息描述和表现主要有两种方式:栅格图片和矢量图片。栅格电子地图是各比例尺的纸介质地形图和各种专业使用的彩图的数字化产品,就是每幅图片经扫描、几何纠正及色彩校正后,形成在内容、几何精度和色彩上与地形图保持一致的栅格数据文件。矢量地图是每幅经扫描、几何纠正的影像图,是对一种或多种地图要素进行矢量化形成的一种矢量化数据文件,是一种更为方便的放大
14、、漫游、查询、检查、量测、叠加地图。这两种实现各有优缺点,栅格电子地图生成比较方便,图像比较细致,和人们日常使用的地图类似,容易被用户接受。但是,栅格电子地图数据量比较大,存储不方便,放大过程中会产生失真,数据不是很准确,很难进行全局或者局部校正,更新起来也比较费事。矢量电子地图生成相对费事,但是数据经过压缩,结构紧湊,数据量小,冗余度低;有利于网络和检索分析;图形显示质量好,精度高;但数据结构复杂,多边形叠加分析比较困难。矢量电子地图可以随意缩放,缩放过程中不会失真,可以进行全局或者局部校正,更新起来也很方便。Google 静态地图API将地图以图片形式展现,使用http接口进行图片地图的创
15、建,无需使用java脚本实现,适用于手机或定制客户端系统的服务调用。开发者无需再考虑地图数据信息的制作、传输、存储等,开发者只需要通过HTTP请求,便可以获取想要的地图图片。通过静态地图调用API,可以进一步增加电子地图的应用范围,同时也使获得地图的方法变得更为简洁直接。本文系统也将采用此方法进行GPS导航系统的开发。1.3 课题主要内容和意义目前市场上手机GPS导航较为成熟的系统都为本地模式的GPS导航系统,将地图数据信息下载到用户的手机自身存储空间,具有响应快速的优点,但却过于消耗手机的存储空间,又手机处理能力有限,使得做出来的导航软件不能够处理过于复杂的分析和服务,应用十分受限。因此客户
16、端/服务器模式的研究与开发成了近年来的研究热点。Google公司推出的Google静态地图API为手机开发者提供了通过HTTP请求便能得到想要地图的服务。开发者只需要将定位的信息以及想获取到地图图片的相关信息通过URL传递给Google服务器,便可以得到相应的地图图片。Google公司的这项服务完全符合客户端/服务器模式,用户不需要存储地图数据到手机自身存储里,开发者也不需要过多设备软件制作复杂的栅格地图或矢量地图,只需要掌握相关API的使用便可高效地获取想要的地图,完全可以满足普通用户的GPS导航需求。本文系统也将采用Google静态地图API,在满足一般手机用户基准上,利用J2ME的JSR
17、179规范为大家带来一款手机GPS导航软件。该软件主要实现了实时定位、兴趣点相关操作、路线规划等,也可以作为利用Google静态地图API进行手机GPS导航软件开发的其他手机开发者参考。第二章相关技术概览本章主要介绍本文系统用到的相关技术知识,包括位置服务、移动地理信息系统、J2ME平台的简介、J2ME的JSR179开发包介绍、Google API简介以及做路线规划时的技术介绍和选择。2.1 基于位置的服务基于位置的服务(Location Based Service,LBS),它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(
18、地理坐标,或大地坐标),在GIS(Geographic Information System,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。2.1.1 基于位置服务的应用范围基于位置的服务(Location Based Service,LBS)的应用非常广泛,可以渗透到任何行业,为任何群体提供服务。LBS的应用服务可以归为以下几类:(1)个人应用领域个人应用领域,LBS主要服务有:定位、路径规划、查找目标、旅游导航、基于定位的一些游戏等。最常用的是为游客提供定位服务,为初到某地的用户提供路径规划,为用户提供公交路线,为用户提供兴趣点的搜索,如酒店旅馆等的位置。(2)公共服务领域
19、LBS在公共服务领域中主要提供公共安全服务应用和智能交通管理及引导。公共安全服务主要涉及危机情况下当事人位置的准确掌握,为救护、消防、公安等紧急服务提供快速准确的定位指引,对保障人民生命产生安全起到了至关重要的作用。LBS在智能交通管理领域也对缓解城市的交通压力起到了重要的作用,通过监控道路段的路况和车流量让驾车人员能即时了解路段交通状况,从而有效地选择行车路线。(2)商业应用领域在商业领域,LBS可以为用户提供周边商业信息,如附近餐馆的近期促销信息,旅馆酒店等的打折优惠信息。LBS为物流、安全、交通、城市规划等传统产生提供了精确的位置信息服务,在商业上的应用也越来越重要,发展前景很光明。2.
20、1.2 基于位置服务的定位方法目前,基于位置服务的方法主要有三种:基于移动终端卫星定位系统的GPS定位方法、基于移动网络的基站定位方法、无线辅助卫星定位系统的A-GPS定位方法。GPS定位是借助全球定位系统的卫星体系来实现的。该方法不需要手机连接移动网络,而依靠手机自身的GPS定位模块获取卫星信号,从而达到定位的效果。但在卫星信号较差的地区性能和可能性都会急剧地下降,其初始化定位速度相对较慢。原理图如下:图2-1GPS定位原理图基站定位依懒移动信号发射架和移动蜂窝基站的信号转发,移动电话测量不同基站下行导频的TOA(Time of Arrival,到达时刻)或TDOA(Time Differe
21、nce of Arrival,到达的时间差),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,就能够计算出移动电话的位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。原理图如下:图2-2基站定位原理图A-GPS辅助定位利用峰窝/无线网络提供辅助信息来帮助卫星系统作为参考点进行定位,并不对位置信息进行计算,而是将GPS的位置信息数据传给移动通信网络,由网络的定位服务器进行位置计算,同时移动网络按照GPS的参考网络所产生的辅助数据,如差分校正数据、卫星运行状态等传递给手机,并从数据
22、库中查出手机的近似位置和小区所在的位置信息传给手机,并从数据库中查出手机的近似位置和小区所在的位置信息传给手机,这时手机可以很快捕捉到GPS信号,这样首次捕获时间将大大减小,一般仅需几秒的时间。不需像GPS的首次捕获时间可能要2-3分钟时间,而精度也仅为几米高于GPS的精度。原理图如下:图2-3A-GPS定位原理图2.2 移动地理信息系统移动地理信息系统(Mobile Geospatial Information System)的出现使人们在旅游中享受自主旅游的愿望得以实现。Mobile GIS是GIS从静态走向动态环境的重大发展,通过综合运用GPS的精确定位技术、便携移动设备(如Pocket
23、PC、手机)、无线Internet接入和GIS的空间信息处理能力,使得系统能够实时地获取、存储、更新、处理、分析和显示地理信息,在现在乃至未来将发挥出巨大的潜力。移动GIS(Mobile GIS)是建立在移动计算环境、有限处理能力的移动终端条件下,提供移动中的、分布式的、随遇性的移动地理信息服务的GIS,是一个集GIS、GPS、移动通信(GSM/GPRS/CD2MA)三大技术于一体的系统。它通过GIS完成空间数据管理和分析,GPS进行定位和跟踪,利用PDA完成数据获取功能,借助移动通信技术完成图开、文字、声音等数据的传输。与传统的GIS相比,移动GIS的体系结构略微复杂些,因为它要求实时地将空
24、间信息传输给服务器。移动GIS的体系结构主要由三部分组成:客户端部分、服务器部分和数据源部分,分别承载在表现层、中间层和数据层。表现层是客户端的承载层,直接与用户打交道,是向用户提供GIS服务的窗口。该层支持各种终端,包括PC机,为移动GIS提供更新支持。数据层是移动GIS各类数据的集散地,确保GIS功能实现的基础和支撑。中间层是移动GIS的核心部分,系统的服务器都集中在该层,主要负责传输和处理空间数据信息,执行移动GIS的功能等。包括Internet、Web Server、Map Server等组成部分。2.3 J2ME简介J2ME的设计初衷是运行在不同的嵌入式系统和消费电子设备上。为了适应
25、不同的设备,J2ME首先对不同的设备进行了抽象。J2ME在设计规范时,遵循“对于各种不同的设备设定一个单一的开发系统是没有意义的事”这一基本原则。因此,J2ME先将所有的嵌入式设备大体上分为两种:一种是运算能力有限且电力供应也有限的嵌入式设备(如PDA和手机);另一种是运算能力相对较佳并在电力供应上相对比较充足的嵌入式装置(如冷气机、电冰箱和机顶盒)。Java引入了一个Configuration的概念,把上述运算功能有限、电力有限的嵌入式设备定义在CLDC规范中,而将另一种装置定义在CDC(Connected Device Configuration,连接设备配置)规范中。也就是说,J2ME利
26、用Configuration的概念把所有的嵌入式设备区分成两种抽象的类别。Configuration可以当作是J2ME对于两种类型嵌入式设备的规范。在这些规范中,定义了这些装置至少要符合的运算能力、供电能力和内存大等规范,同时也定义了一组在这些装置上执行的Java程序所能用的基本类库。在这些规范中所定义的基本类库为Java核心类库的子集以及该类别设备特性相符的扩充类库。就CLDC规范而言,能支持的核心类库有java.lang.*、java.io.*和java.util.*,能支持的扩充类库是java.microedition.io.*。区分出两种主要的Configuration后,J2ME接着
27、定义了框架(Profile)。Profile是架构在Configuration之上的规范。之所以有Profile的概念,是为了要更明确地区分出各种嵌入式设备上Java程序该如何开发、具有哪些功能。因此,Profile中定义了与特定嵌入式设备非常相关的扩充类库。当然,这些扩充类库也是建立在底层Configuration所定义的核心类库基础之上的。2.3.1 J2ME架构J2ME架构的模块化设计使应用程序可以灵活适应小型计算设备的限制。J2ME架构没有替代小型计算设备的操作系统。相反,J2ME架构由位于原生操作系统之上的多层软件组成,这些软件共同称为“连接有限设备配置”(Connected Lim
28、ited Device Configuration, CLDC)。安装在操作系统之上的CLDC形成了小型计算设备的运行时环境。J2ME架构由3个软件层组成:第一层是包括在内的配置层,这个层次直接与原生操作系统进行交互。配置层还处理profile和JVM之间的交互。第二层是profile层,由小型计算设备的应用程序编程接口(API)的最小集合组成。第三层是Mobile Information Device Profile( MIDP )层。MIDP层由用户网络连接、永久存储和用户界面的java API组成。它还能够访问CLDC库和MIDP库。2.3.2 JVM ( 虚拟机 )JVM是专门为微型电
29、子设备与资源受限设备如:手机、寻呼机、移动互联网设备、家用微电子设备等设计的一种轻便、紧凑的JAVA虚拟机。JVM可以为微型电子设备提供一个完整的JAVA运行环境,除了一些微型设备所必需的适当的功能有所不同外,它是由JAVA虚拟机规范定义的真实的JAVA虚拟机。它是专门为那些受资源限制,只有几百K字节内存的微型设备设计的。JVM起初是由SUN微系统实验室为一个名叫“Spotless”的项目创建的。它的目标是为资源受限制的Palm(是目前较为流行的掌上电脑操作系统)可连接的电子设备,实现一个java虚拟机。基于上述原因,JVM具有以下几个特点:(1)小,仅具有40KB至80KB的静态内存。(2)
30、轻便、精巧。(3)模块化并可定制。(4)尽可能完全紧凑的完成设计目的。2.3.3 MIDP( 移动信息设备简表 )MIDP是专门为互联受限设备配置设计的,它为移动设备提供了一套API集合,MIDP包含用户界面类、持久存储功能与网络功能。它同时也包括一个供用户下载新应用到终端设备的标准运行环境。运行在MIDP下的小应用程序叫做MIDlet移动设备小应用程序,它与Applet类似。MIDP要求平台设备提供一个机制用来存储简单的数据记录,通过正常的平台事件,比如重新启动和电池更新维护系统的完整性。MIDP是以SUN、Motorola、Nokia为中心的MIDPEG组织(Mobile Informat
31、ion Profile Expert Group)所制订出来使用在CLDC上的Profile,是以能使用在移动电话、双向对讲机、可无线通信的PDA(个人数字助理)上面为前提设计出来的。另外,像日本国内的NTT DoCoMo、J-PHONE、KDDI等电信商与移动电话制造商也都曾参与了MIDPEG。MIDP是在CLDC的功能上附加提供适合目标设备用的GUI与事件处理功能。这样一来,就可以当成MIDP应用程序(MIDlet)来运行了。MIDP由于是由多个企业所共同策划出来的开放标准,因此主要的移动电话制造商也会制造出大量的对应机种。也就是说,以MIDP为基准所制作出来的应用程序,也将可以在流通于市
32、面上的移动电话上执行。另外,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.jcp.org/aboutJava/c
33、ommunityprocess/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是很多易用的类和接口的压缩包,其在开发移动应用程序的时候具有以下三个特
34、点:(1)获取设备的位置信息(2)创建、编辑、存储、销毁陆标(3)获取设备的定位定位API首先需要连接一个定位方法,利用定位方法产生定位对象,每种定位方法都不一样。比如,各种方法所需要的时间都不一样,每种方法的精确度也不一样。最常用的方法有基于设备(比如GPS,这种方法基于卫星全球定位系统)、基于网络(比如蜂窝,这种方法中网络决定了位置),还有混合方法(比如A-GPS方法,这种方法利用网络信息来加速定位)。下面的图表显示了API MIDLet使用GPS定位方法来定位的结构。对MIDLet在SDK环境中检测后,还必须在真实的环境中进行检测,来确保正确运行。真实的环境意味着在支持移动定位的设备中使
35、用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,是一种使用 HTTP 请求计算多个位置间路
36、线的服务。路线可以以文本字符串(如“Chicago, IL”或“Darwin, NSW, Australia”)或纬度/经度坐标的形式指定起点、目的地和路标。Google Directions API 可以使用一系列路标传回多段路线。此服务通常适用于计算路线的静态(事先已知)地址,以便将应用程序内容放置在地图上;但此服务不适用于对用户输入的内容进行实时响应。有关动态路线计算(例如,在用户界面元素中),请参见 JavaScript API V3 Directions Service 文档。计算路线是一种耗时、耗资源的任务。如果可能,系统会使用此处介绍的服务提前计算已知地址,并将结果存储在您自己设
37、计的临时缓存中。2.6 路径规划的技术选择路径规划在导航系统软件中是必不可少的一部分,主要用于为用户提供起始位置到目的地的最优路径或最短路径。下面介绍路径规划中的两种方法,以及本文最终选择的方法。2.6.1 A算法实现最短路径搜索A*搜寻算法,俗称A星算法,作为启发式搜索算法中的一种,这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstra算法一样,可以找到一条最短路径;也像BFS一样,进行启发式的搜索。A*算法最为核心的部分,就在于它的一个估值函数的设计上:f(n)=g(n)+h(n);其中f(n
38、)是每个可能试探点的估值,它有两部分组成:一部分,为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)为实际问题的代价值)。当此四个条件都满足时,一个具有f(n)=g(n)+
39、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)的下界之下,并且尽量接近h*(n)。2.6.2 Go
40、ogle Directions API提供服务Google Directions API主要服务就是为了计算路线。客户端发送路线请求,服务器根据请求,以XML或JSON形式输出给客户端。Google Directions API 请求是以下形式的 HTTP 网址: 可能是以下任何一个值:(1)json(建议)表示以 JavaScript 对象表示法 (JSON) 的形式输出(2)xml 表示以 XML 的形式输出而parameter则为请求的参数,有些参数必填,而有些参数则是可选参数。根据网址的标准,所有参数均使用字符&分隔。下面枚举了这些参数及其可能的值。Google Directions
41、API 使用以下网址参数定义路线请求:(1)origin(必填)- 希望根据其计算路线的地址或文本纬度/经度值。(2)destination(必填)- 希望根据其计算路线的地址或文本纬度/经度值。(3)mode(可选,默认为 driving)- 指定计算路线时使用的出行方式。在出行方式中指定有效的值。(4)waypoints(可选)指定一组路标。路标通过经过指定的位置可以改变路线。可以以纬度/经度坐标或将进行地址解析的地址的形式指定路标。(5)alternatives(可选)设置为 true 时,可以指定路线服务可以在响应中提供多条备选路线。请注意,提供备选路线可能增加服务器的响应时间。(6)
42、avoid(可选)指示计算的路线应避开指定的地图项。目前,此参数支持以下两个参数:tolls 指示计算的路线应避开收费公路/桥梁。highways 指示计算的路线应避开高速公路。(7)language(可选)- 传回结果时所使用的语言。请参见支持的区域语言列表。请注意,我们会经常更新支持的语言,因此该列表可能并不详尽。如果未提供 language,那么,路线服务将会尽可能地尝试使用浏览器的本机语言。您还可以通过使用 的本地化域明确设置结果偏向。(8)sensor(必填)- 指示路线请求是否来自装有位置传感器的设备。该值必须为 true 或 false。2.6.3 路线规划最终方法选择启发式A算
43、法可以高效快捷地寻找出起点到终点的最短路径,用于空间固定的局部地区地图的路径搜索是个不错的选择。本文系统开始也打算用A算法来实现路径规划,但通过实践发现用A算法来实现,有三大问题:第一、只能对空间固定的局部地区实现路线规划,这样便限制了软件的使用范围;第二、地图切割道路网标记工作量太大,切割成的图片块大小也直接影响路线规划的最短路径获取;第三、显示的最短路径存在违背交通规则的情况。而Google Directions API可以选择不在道路上的点,而根据该点最近道路上的点来进行路线规划,可以使选择起点和终点时不一定要在道路上;另外使用Google Directions API,我们便不再需要对
44、地图进行切割并标记道路网了,使用Google Directions API可以以XML的形式将起点到终点的最优路径上的所有拐点信息发送给客户端,客户端只需要解析XML文件即可,而解析工作主要用kxml进行解析。第三章软件需求分析本章主要介绍本文系统的需求,包括用户的具体需求介绍、根据需求而划分的具体功能模块的介绍。3.1 用户需求该手机软件将是一款面向3G、支持OGC标准的移动地图软件,预计最终实现以下一些功能:(1) 地图浏览:支持地图的放大、缩小、平移;(2) 地图查询:支持属性查询、空间查询以及属性与空间的混合查询;(3) POS(Points of Interest,兴趣点)的查询、定
45、位和添加。即在某个区域范围内,搜索并定位用户列出选择条件的POS,查询到适合的POS后,必须把用户当前的关注点设置为该POS所在的区域。在浏览地图的过程中,用户会记录他们感兴趣的一些点,例如,餐馆、旅游景点等。以后用户就可以通过这些记录直接定位到这些点所在的地图位置。(4) 线路规划和引导:规划用户从当前为当前位置到目的地的路线,以及经过该路线过程中的引导。3.2 功能模块划分基于需求,我们设计了相关的功能去实现我们的需求,下面便是相关功能模块的介绍及实现。3.2.1 功能模块图手机GPS导航系统在线地图模块离线地图模块地图自由浏览实时定位兴趣点添加兴趣点查询、删除、锁定路线规划(最短路径搜索
46、)兴趣点的显示、靠近动画地图放大、缩小指定地点指定范围内兴趣点搜索图3-1块能模块图3.2.2 功能要求系统主要实现功能及描述:(1)实时定位:能够根据用户当前位置,实时更新用户当前位置在地图上的显示。(2)地图自由浏览:可以在联网或离线状态下自由浏览地图,联网状态可以浏览任意地点的地图,但离线状态下只能浏览当前获取到的局部地区的地图。(3)地图放大、缩小:支持联网状态下,对地图进行放大、缩小(4)兴趣点添加:可以将指定地点(需给出确定经纬度)、当前位置添加为兴趣点(即添加到LandmarkStore里)。(5)兴趣点查询、删除、锁定:能够查询用户添加的兴趣点,并能对其删除、锁定(即将该兴趣点显示在手机屏幕中心)。(6)路径规划:用户可以选择地图上两点(需在道路上)后,能够将两点间规划好的路径显示在地图上。(7)兴趣点的显示与靠近动画:能够根据兴趣点坐标将兴趣点显示在地图上,用户靠近某兴趣点时,在该兴趣点上显示靠近动画。(8)指定地点范围内兴趣点的搜索:能够对指定地点或当前位置的指定范围内兴趣点进行搜索。第四章详细设计与开发本章主要介绍本文系统的详细设计与开发,包括一般MIDlet程序开发流程介绍、本文系统各功能模块的详细设计及功能模块的相关流程逻辑介绍。4.1 MIDlet开发流程介绍
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922