Android手机平台下开发旅游景点位置查询应用程序
- 格式:pdf
- 大小:662.83 KB
- 文档页数:8
2011.
01Android手机平台下开发旅游景点位置查询应用程序苏亚光吴亚峰索依娜1背景知识随着Google及其OHA(OpenHandsetAlliance———开放手机联盟)其他成员的大力推进,Android平台的智能手机市场占有率与日俱增。由于Android的发起者是Google,因此Android平台对Google很多互联网服务的支持也优于很多其他手机平台,这当然也包括非常著名的Google地图服务。Android中为Google地图应用的开发提供了很多方便的辅助类,如MapActivity、MapView等。通过这些类可以非常方便地开发出丰富多彩的地图应用程序,如位置查询、行车路线查询等。2案例功能将结合旅游景点位置查询应用的开发来介绍Android平台下Google地图应用开发所需要用到的各种知识与技术。在正式介绍开发之前,首先对本Android应用的功能、界面进行简单的介绍。2.1主界面本应用主要包含一个主界面,其中分成两个区域,每个区域有不同的功能,如图1所示。(1)上面的操纵区域中从左至右依次为景点名称输入文本框、景点位置查询按钮、历史记录查询按钮、地图模式选择按钮。(2)下面的地图显示区域用来以气球来标识要查询的景点位置。2.2主要功能(1)用户可以在文本框中输入要查询的景点名称,如“故宫”,然后按下景点位置查询按钮,则应用程序会从网络上查询到景点的经纬度并在地图上用气球标识出来。(2)用户可以通过点击气球来打开信息窗口,信息窗口中会显示气球对应景点的经纬度信息。再次点击气球,就可以关闭信息窗口。(3)点击历史记录查询按钮,系统会弹出历史记录选择对话框,如图2所示。用户可以在对话框中选择查询过的景点,不用再次输入了。(4)点击地图模式选择按钮,系统会弹出地图模式选择对话框。用户可以根据需要选择普通地图模式或卫星照片模式,通过卫星照片模式可以看到更为真实的情况,如图3摘要:详细介绍在Android智能手机平台下,用Java开发基于GoogleMap地图服务的旅游景点位置查询应用。通过实际案例,介绍了如何使用Java在Android平台下,进行GoogleMap地图应用的开发,同时也介绍了一些控件的使用技巧及Android平台下应用开发技巧。关键词:Ajax;GoogleMap;Flickr;MushUp
图1
主界面图2查询历史选择界面图3地图模式选择界面762011.
01所示。3应用界面的搭建开发应用的各项业务功能之前,首先要进行界面的搭建。在Android平台下搭建界面一般都是使用XML文档,这样更方便,效率更高。编写界面XML文档前,首先需要将界面中要使用的一些文字、颜色资源对应的XML文档组织好。本应用中主要用到了两个资源XML文档:strings.xml、colors.xml。(1)strings.xml文档的内容
01XML文档来完成也是Android应用开发的一大特色,这与传统的JavaME开发手机应用有很大的不同。界面搭建完成后,还需要将应用中需要用到的一些图片准备好,如图4所示。从前面的开发中读者可以感觉到,一个Android应用程序需要很多的资源,这些资源的组织是有规定的,本应用中用到的资源组织结构如图5所示。
从图5中可以看出,图片资源都在res目录下的drawable-mdpi目录中,主界面布局文件main.xml位于res目录下的lay-out目录中,颜色、文本资源XML文件位于res目录下的val-ues目录中,Java源代码位于src目录下。4自定义气球Overlay的开发由于Android的API中并没有直接提供气球、信息窗口等地图二次开发中必备控件的实现,因此在正式开发业务功能前,首先要开发带信息窗口的气球实现类,其代码框架如下:packagewyf.wpf;importcom.google.android.maps.Overlay;//此处省略了一些不重要的import语句importandroid.graphics.*;classMyBallonOverlayextendsOverlay{//常量的声明finalstaticintpicWidth=20;//气球图的宽度finalstaticintpicHeight=34;//气球图的高度finalstaticintarcR=8;//信息窗口的圆角半径//成员变量的声明//表示当前选中的气球staticMyBallonOverlaycurrentBallon=null;Stringmsg;//此气球对应的文字信息Stringjdmc;//此气球对应的景点名称//是否显示文字信息窗口的标志位,true显示文字信息窗口booleanshowWindow=false;GeoPointgp;//此气球对应的经纬度publicMyBallonOverlay(GeoPointgp,Stringmsg,Stringjdmc){//构造器this.gp=gp;this.msg=msg;this.jdmc=jdmc;}@Override//重写点击事件处理方法publicbooleanonTouchEvent(MotionEventevent,MapViewmv){//此处未来开发屏幕触控事件处理代码}@Override//绘制自定义Overlay的方法publicvoiddraw(Canvascanvas,MapViewmapView,booleanshadow){//未来开发代码}//将经纬度翻译成屏幕上XY坐标的方法publicPointgetPoint(MapViewmapView){//未来开发代码}//绘制信息窗口的方法publicvoiddrawWindow(Canvascanvas,Pointp,intwinWidth){//未来开发代码}}上述代码给出了自定义气球Overlay类MyBallonOverlay的代码框架,还留了很多功能丰富要后面逐步实现。从上述代码框架中可以看出自定义的Overlay需要继承系统提供的com.google.android.maps.Overlay类,其实Overlay就是可以进行自定义绘制的覆盖在地图上面的一个层。Android下Google地图应用的开发中,经常需要通过开发自定义的Overlay来往地图上添加自己应用需要的东西,如:气球、信息窗口、导航指示箭头等等。下面就逐步实现各个功能,首先实现onTouchEvent,其代码如下:publicbooleanonTouchEvent(MotionEventevent,MapViewmv){if(currentBallon!=null&¤tBallon!=this){//若当前气球不为空且不是自己,什么都不做returnfalse;}//若在气球上按下则设置当前气球为自己,//且当前状态为在气球上if(event.getAction()==MotionEvent.ACTION_DOWN){intx=(int)event.getX();//获取点击的x坐标inty=(int)event.getY();//获取点击的y坐标//将此气球的经纬度翻译成屏幕上的xy坐标Pointp=getPoint(mv);intxb=p.x-picWidth/2;//计算气球左上侧点的x坐标intyb=p.y-picHeight;//计算气球左上侧点的y坐标if(x>=xb&&x true;}}图4应用中用到的图片图5资源文件组织结构78