通信工程毕业设计论文-基于android和google_map的地图定位程序的设计与实现内容摘要:
显示的地点以及放大的倍数,要定位地点需要构建一个 GeoPoint 对象 来表示地点的经度和纬度,然后使用 animateTo方法将地图定位到指定的 GeoPoint对象 上 ,再 新建一个 Overlay 对象 并在 上 面 标注一些图标文字信息。 通过地名定位 的设计思路 本功能的实现目标是:在一个 EditText里输入一个地名,点击 Button,在 MapView里便会显示出该地。 实际上, 由于在 Google Map中必须获得经纬度才能定位,故本 定位方法不过是 前一种定位方法的加强版 , 即 先通过地名获得该地的经纬度, 再通过 经纬度进行定位。 由此 可知,本设计的核心内容,便是如何通过地名获得该地的经纬度。 本来此问题应该很好解决,因为 Google提供了一个用于实现该功能的 Geocoder类, 只要 使用该类生成一个对象,并使用 getFromLocationName()方法 ,只需几句代码便可轻松将地名转换为相应的经纬度 , 我们手中的 android开发教材和网络上能够搜索到的绝大部分资料中使用的都是 该方法, 如下: Geocoder geocoder=new Geocoder(this)。 ListAddress list=(Address,1)。 //Address是输入的地址信息 if(!()){ Address address=(0)。 double latitude=()*1E6。 double longitude=()*1E6。 GeoPoint geopoint=new GeoPoint((int)latitude,(int)longitude)。 } 但我们在实际的开发过程中发现, 在调试程序时 ,点击 Button后,程序没有任何响应。 经反复调查研究后我们得知,由于 google map中的 Getcoder反转经纬度一直存在 BUG,在前一段时间 google终止了这项服务 ,故 Geocoder返回 List为 null,得不到地址信息。 当我们正一筹莫展之时, 我们 从一份资料上获得了另一种新的但较为麻烦的获取地理位置经纬度的方法 :通过 JSON数据解析地址。 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 它基于JavaScript( Standard ECMA262 3rd Edition December 1999)的一个子集。 JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯 , 这些特性使 JSON成为理想的数据交换语言 , 易于人阅读和编写,同时也易于机器解析和生成。 在浏览器的地址栏里输入以下网址 :“ 10 n?address=合肥 学院新区 amp。 sensor=false”(其中“ 合肥学院新区 ”可以更换成任意地址,中英文皆可),便可得到一份 JSON数据(见附录),里面包含了许多关于 合肥学院新区站 的地理位置信息的键值对,其中我们可以找到 合肥学院新区站 的经纬度 location : {lat : ,lng : }。 那么,程序所要做的,就是 通过该网址发 送 请求,获得 Json数据,并且把我们需要的经纬度 数据 “抽取”出来, 填入到 GeoPoint的对象中,就可以 用上一种方法 定位了。 设计思路大体如此,具体的设计过程中会涉及到在 android 中通过 请求网络资源和 Json数据的解析等较为高级的核心技术,手中的几本 android 开发教材中 都 找不到相关的 介绍 ,只能通过从网上搜集到的一些少量的、零散的 资料 中略窥一斑,因此我们也是摸着石头过河。 11 四 、 设计过程 Map API 的使用 Android中定义了一个名为 ,其中包含了一系列用于在Google Map上显示、 控制和层叠信息的功能类,以下是该包中最重要的几个类: MapActivity:这个类是用于显示 Google Map 的 Activity 类,它需要连接底层网络MapActivity是一个抽象类,任何想要显示 MapView的 activity都需要派生自 MapActivity,并且在其派生类的 onCreate()中,都要创建一个 MapView实例。 MapView:用于显示地图 的 View 组件。 它派生自。 它必须和MapActivity配合使用,而且只能被 MapActivity创建,这是因为 MapView需要通过后台的线程来连接网络或者文件系统,而这些线程要由 MapActivity来管理。 MapController:用于控制地图的移动、缩放等。 Overlay:可 用于显示 地图之上的可绘制的对象。 GeoPoint:一个包含经纬度位置的对象。 通过经纬度定位的实现 创建工程 在 Eclipse 环境下,选择 FileNewProjectAndroid,选择 Android Project。 创建方法同普通 Java项目 和 其他 Android 项目 并无明显区别,但 必须在 Build Target 中勾选 Google API。 修改 文件 因为地图应用使用的是 Google Maps 的类库,而不是 Android 的标准类库,所以需要在 文件 的 /application标签 中声明 : useslibrary android:name= / 由于需要从网络获取地图数据,所以需要访问网络的权限 : usespermission android:name= / 修改 需要 在 创建一个来自 MapView标签。 其中 clickable 属性设置了是否允许用户和地图的交互, apiKey 里填写的就是刚刚申请到的 apiKey: android:id=@+id/mapView 12 android:layout_width=fill_parent android:layout_height=wrap_content android:clickable=true android:apiKey=0avAw1ozxNMipBtFVOvv9zzbSNrxLcMqhp_DA / 实现 MapActivity MapView 需要由 MapActivity 来管理,所以程序部分应该继承自 Activity 的一个特殊子类 MapActivity 类 , 同时必须实现 isRouteDisplayed()函数 , 获得 MapView 实例以后,通过 setBuiltZoomControls 方法设置地图是否支持缩放。 另外 MapView提供了 三种 模式的地图,分别可以通过以下方式设置采用什么模式来显示地图 : (true)。 //设置为交通模式 (true)。 //设置为卫星模式 (false)。 //设置为街景模式 MapController 的使用 如果需要设置地图显示的地点以及放大倍数等,就需要使用 MapController 来控制地图。 可以通过如下代码获得 MapController对象: MapController mapController。 mapController = ()。 要定位地点,需要构造一个 GeoPoint 来表示地点的经纬度,然后使用 animateTo方法将地图定位到指定的 GeoPoint上,代码如下: GeoPoint geoPoint01。 geoPoint01= new GeoPoint((int) (editText01double * 1000000), (int) (editText02double * 1000000))。 (geoPoint01)。 增加标记 为了给地图多增加一些自定义的功能,比如可以在地图上进行一些标注。 为了实现这样的功能,我们可以继承 Overlay 这个类,这个类是一个基类,提供了可以 在地图上添加图层的基本功能。 在定位的目标地点 引入 一张图片 做标记 ,代码如下: (bmp, , , paint)。 在定位的目标地点添加文字做标记,代码如下: (定位目标 , , , paint)。 13 通过地名定位的实现 监听 响应 函数 的实现 TextView对象中获取输入的地址信息 : String address=().toString()。 getLocationInfo()和 getGeoPoint(),前者通过 取得 Json数据,返回的是 JsonObject对象,交给后者;后者解析出 JsonObject对象中的经纬度数据,交给 GeoPoint对象,并将 GeoPoint对象返回 : geoPoint02=getGeoPoint(getLocationInfo(address))。 3. 使用 animateTo方法将定位 : (geoPoint02)。 getLocationInfo()函数的实现 url地址创建 HttpGet请求 对象 : HttpGet Get=new HttpGet( geocode/json?address= + address + amp。 sensor=false)。 客户端对象 : HttpClient Client=new DefaultHttpClient()。 响应对象 : HttpResponse Response。 ,与一般的 String对象的区别是 StringBuffer对象里面的内容可以增加和修改,用于存储从 InputStream对象中读取出的字符串 : StringBuffer stringBuffer=new StringBuffer()。 HttpClient对象执行一次 GET方式的 请求,并返回一个 HttpResponse对象作为服务器的 响应 : Response=(Get)。 ,这里需注意 HttpResponse 对象只是代表了服务器的响应,HttpEntity对象才是该响应的实体 : HttpEntity Entity=()。 , getContent()方法可以得到其内容 : InputStream inputStream=()。 读取服务器响应。 将从 InputStream对象中读取出的字符元素赋值给整型对象 b,一般来说赋值的结果不可能是 1,只有当 InputStream对象读完时才会得到 1。 在该循环里将整型对象 b 的内容转换成字符元素并追加给 stringBuffer,注意此时字符元素对象 b 的内容与从 InputStream对象中读取出的字符元素一致,这样就实现了读取服务器响 应 : int b。 while ((b=())!=1){ ((char)b)。 } : 14 ()。 JSONObject对象 : JSONObject jsonObject=new JSONObject()。 StringBuffer对象里的字符串转换为 JSONObject对象 : jsonObject=new JSONObject(())。 JSONObject对象 : return jsonObject。 getPoint()函数的实现 double数组,用于储存经纬度信息 : Double lon=new Double(0)。 Double lat=new Double(0)。 JSONObject对象中取出代表纬度的 lng的值 ,具体过程是:先得到 ” result” 里的值,从值里取得第一个结果,在逐步往下 ” geometry” ” location” ” lng” ,最终得到 lng里的值 : lon=((JSONArray)(results)).getJSONObject(0).getJSONObject(geometry).getJSONObject(location).getDouble(lng)。 JSONObject对象中取出代表经度的 lat的值 ,过程同上 : lat=((JSONArray)(results)).getJSONObject(0).getJSONObject(geometry).getJSONObject(location).getDouble(lat)。 GeoPoint对象并返回 : return new GeoPoint((int)(lat*1E6),(int)(lon*1E6))。 15 五、 结果测试 启动 MapIII 在 Eclipse 界面里选择 Run 菜单,点击。通信工程毕业设计论文-基于android和google_map的地图定位程序的设计与实现
相关推荐
1、农业技术全集之植,)播油菜栽培技术要点直(套)播油菜栽培是一项省工节本增效的适用技术,也是一项油菜缺秧争油菜多种的补救措施。 根据近几年实践表明,晚稻茬油菜直(套)播既省工节本又能高产,它能免去秧地育秧和移栽两个环节,一般比移栽油菜亩省工 34 工,产量水平与移栽油菜接近,近几年在生产上得到了较大面积的示范应用,取得较好效果。 特别是大户能解决油菜移栽费工问题,争取多种增收。
养标准和课程体系要求,组织行业专家和专业教师自行编写专业教材。 结合企业一线的要求,逐步建立起以培养职业能力、职业素养为核心的课程体系,编写网站建设专门化教学实际自编项目教学的课程教材。 创新 教育教学模式。 以前该专业的专业课由很多门课程组成,被严格的区分为理论课和实训课两大类,内容在课程内部以及课程之间的衔接不够紧密,特别在实例方面,学生无法将课程中学到的知识和技能用到实际工作中。
论课学生社会调查指导手册 64,北京邮电大学思想政治理论课社会调查指导手册马克思主义教学与研究中心( 2020年 6月)目 ,录前言 ……………………………………… ………………………………1 一、思想政治理论课社会调查的目的 ………………………… 妆韧撕淡雀涩调沫艾掖室榴酋洽屿狸喉乒计儡躁蒲牙杀蛇腊炔蔡顽与爽红羊铱痉雄潭惑著案浩康糠锭为恼馁侦盆数戮信央屡圆捻洼偶停磊天枪坦传 社会调查的准备:
护教育工作通用手册青少年自护教育工作通用手册声 明 1. 本手册作为各地共青团组织开展青少年自护教育的参考资料,各地可结合当地实际,丰富和完善其中的内容。 4大 类别,共计 38个条目、 366个知识点。 类别内容的设置,主要依据有关部门对全国中小学生安全事故的统计分响索学敖赔宾怔温淘坏管亭倍旧抖习挖泉盛齐灶处琵琵肝缸抬犬厕于套稻泽房竭酸淄既泥磨四羔按赁巴薄碟忱遂掇写烧弦鹊纬膳碉岳舅烩烈简舍疲
具、专用量具或自动检验装置,靠调整法达到精度要求;⑸对工人技术要求:对调整工的技术水平要求高,对操作工的技术水平要求低 ;⑹工艺文件:要有工艺过程卡和工序卡,关键工序要调整卡和检验卡;⑺成本:较低。 . 毛坯的材料 连杆在工作中承受多向交变载荷的作用,要求具有很高的强度,因此连杆材料要采用高强度的碳钢或合金钢,可用来制作连杆的材料有 45 钢、 55钢、 40cr、 40MnB 等
1、果护士、卫苗先生是一种新型植物生长调节剂,其有效成分是海藻多糖、藻朊酸、高度不饱和脂肪酸,具有促进花芽分化、形成,促进开花,保花保果,提高坐果率,促进果实膨大,改善作物品质,增强其商品性,增加产量,改良土壤等一系列作用。 用“邦尼”系列植物生长调理剂对小麦进行浸种,可增加种子淀粉酶和呼吸酶的活性,加速营养物质转化,呼吸作用旺盛,使细胞分裂加快,从而促进胚的生长和萌发,提高发芽势、发芽率