济南中心android就业面试技巧系列-技术篇地图_第1页
济南中心android就业面试技巧系列-技术篇地图_第2页
济南中心android就业面试技巧系列-技术篇地图_第3页
济南中心android就业面试技巧系列-技术篇地图_第4页
济南中心android就业面试技巧系列-技术篇地图_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【济南中心】Android 就业面试技巧系列-技术篇(地图)地图 api 里大概有 30 个类,api 的是 HYPERLINK http:/d/map/ http:/d/map/ ,通过这个 api 可以轻松的获取服务和数据,构建功能丰富、交互性强的地图应用程序.这个 api 为要使用开发者提供了本地搜索、路线规划、地图定位灯等数据的服务。地图 api,首先要申请它的 API key,申请这个 key 是为了相对系统唯一标识这个应用的。的常量接口中去。这些做完之后还要添mapapi 的 jar 包和负责定位的locSDK 的 jar 包。信息的权限。然后在布局文件中添加 MapView 控件

2、用于展示地图。这个 MapView 是地图 api 中继承 ViewGroup 的一个类,是一个自定义控件。地图的服务器端校验获取到的 key,校验时初始化地图引擎,使用地图引擎的管理类 BMapManager 进行初始化,初始化时会校验 key 还有网络状态。key 为 300 时表示败,网络状态为 2 时表示未连接上网络。上面。只做以上几步,我遇到了这样一个问题,当第一次显示地图时能够正常显示,但退出后,再进来就看不到地图的。这时候就得考虑到 activity 的生命周期问题了,得把 activity 的 onResume、onPause、onDestroy 这三个方法都覆写后才能正常显示

3、。的类 BMapManager、MapView、MapController.BMapManager 类用于地图的管理,比如地图的初始化;MapView 类用于地图的展示;MapController 类用于对地图的控制,主要用于控制地图的移动、缩放和旋转。对当前正在显示的 Map 进行控制。效果一:地图的放大与缩小。通过 MapView 设置缩放控件,首先要明确缩放级别。在 2.0 版本之前支持的缩放级别是 3-18,在 2.0 版本之后所支持的缩放级别变成了 3-19,所多的这一个级别是使地图呈现 3D 效果。一般会在 MapView 中添加一个能够让用户控制的能放大和缩小的控件,调用MapV

4、iew 里的 setBuiltInZoomControls(true)方法添加控件。也可以使用 zoomIn 方法和 zoomOut 方法,分别放大和缩小一个级别。效果二:地图的移动使用这个 api 有三个做了这几步就可以把地图展示在验证失需要注意的是,在加载布局之前,要先到在工程中添加网络状态的一些权限和获取加地图引擎到工程中,这个引擎包含了申请完 key 之后,把这个 key 放到地图默认的中心点是,移动要调用 MapController 类中的animateTo 方法,给这个方法传进一个 GeoPo对象。GeoPo对象里放的是信息。效果三:地图的旋转地图上的旋转分为水平方向上的旋转和垂直

5、方向上的旋转。水平方向上的旋转,调用 MapController 中的 setRoion 方法,在这个方法里传入旋转角度,逆时针旋转为角度增大方向。垂直方向上的旋转,调用 MapController 中的 setOverlooking 方法,在这个方法里传入旋转角度。这里的角度都为负数,范围在-45-0。效果三:点击获取点信息版本 2.0 之后在 MapView 添加了一个 MKMapViewListener,它是地图显示事件器,这个器里有四个方法,第一个 onClickMapPoi(MapPoimapPoiInfo) 方法, 点击到地图可以点击的标注时会回调此接口,需要通过MapContro

6、ller.enableClick(true)方法来控制点击的开关,否则点击会没反应。第二个 onGetCurrentMap(Bitmap b)方法,截图成功后会回调此接口,动画结束时会回调消息 onMapAnimationFinish(),地图移动完成时会回调接口onMapMoveFinish()。调用 MapView 的 regMapViewListener器,并把我之前说的器放进去,就可以实现点击地图上的点获取信息的功能。知识点四:地图图层把地图展现出来以后,要想在地图上覆盖一些东西,就设计到了地图图层的知识。地图可以包含一个或多个图层,每个图层在每个级别都是由若干张图块组成的,它们覆盖了

7、地图的整个表面。例如您所看到包括街道、点、学校、公园等内容的地图展现就是一个图层,另通流量的展现也是通过图层来实现的。图层分为三类:底图、实时交通信息层和图。地图是基本的地图图层,包括若干个缩放级别,显示基本的地图信息,包括道路、街道、学校、公园等内容。实时交通信息层可以调用 MapView 中的 setTraffic(true)方法展示出来。地图是拍摄的真实的地理面貌,所以地图可用来检测地面的信息,你可以了解到地理位形等,调用 MapView 中的 setSalite(true)方法实现。效果五:底图展示底图展示是默认的效果六:显示实时交通MapView.setTraffic(true)效果

8、七:图MapView.setSalite(true)需要注意的是,展示底图的时候要关闭掉实时交通图和的时候关闭掉setTraffic(false)和 setSalite(false)。知识点七:覆盖物图,显示图的时候要关闭掉实时交通图,分别图,显示实时交通图有了地图的图层,就可以在地图上叠加或覆盖内容,这些内容把它称作地图覆盖物。比如说覆盖一些标注,矢量图形元素,定位坐标这些。覆盖物都有自己的地理坐标,当拖动或缩放地图时,它们会做相应的处理。关于覆盖物有一个重要的类 Overlay,它表示可以显示在地图上的覆盖物。如果想在图层上画一些东西,就必须继承Overlay,关于Overlay 的使用,

9、在 MapView上显示 Overlay 的步骤是固定的。一共三步,第一步是要获取到 MapView 中保存 Overlay 的集合mapView.getOverlays()。这个集合是一个 list.第二步是在这个集合里添加需要显示的内容。第三步刷新界面。处理不同的覆盖物所做的不同的地方就是如何给不同的Overlay 设置数据。知识点八:覆盖物的分类通常使用地图会用到的覆盖物有:几何图形绘制覆盖物:GraphicsOverlay文字绘制覆盖物:TextOverlay分条目覆盖物:ItemizedOverlay本地搜索覆盖物:PoiOverlay驾车路线覆盖物:RouteOverlay换乘路线

10、覆盖物:TransitOverlay位置覆盖物:MyLocationOverlay效果九:几何图形绘制覆盖物几何图形无非是点、线、面,面里面分为圆、矩形、多边形这几种。使用绘制覆盖物的通用三步。在这三步中定义自己的覆盖物 GraphicsOverlay,然后设置覆盖物的数据。比如说画一个圆,这里有一个几何图形类 Geometry,使用这个类的 setCircle 方法可以获取一个圆,得指定这个圆的圆心和半径,在这个 setCircle 方法中传进来圆的圆心还有半径(是米),这样就把这个圆给确定下来了.接下来给这个圆设置样式,比如圆的颜色,圆的线条,是否填充这个圆。然后把这个覆盖物添加到集合中就

11、可以显示出来了。效果九:文字绘制覆盖物还有一种是文字图形覆盖物,可以在地图的某个点上绘制一段文字信息。这里要处理的数据是这个点,要显示的文字的内容,以及文字的样式,比如文字的大小还有颜色。Overlay 类中提供了 addText 方法,绘制文字覆盖物方便多了。效果十:分条目覆盖物分条目覆盖物所对应的信息就是一个一个的 item,比如说描述一下这个附近有小吃的地儿,就可以把搜索到的结果绘制在地图上。这里有个类是ItemizedOverlay,在处理某个类型的覆盖物,包含多个类型相同、显示方式相同、处理方式相同的项的时候,使用这个类,比如说在附近画一些点,ItemizedOverlay 这个类本

12、身包含 list,分别设置这些点的位置信息,文字片段信息,还有 item 的标题文本,把这些点一个一个或者批量的添加到 list 中,这些数据设置好后,再把这个覆盖物添加到 Overlay 的集合中,就可以显示出来了。效果十一:点击条目,显示泡泡窗口还会做一个效果,当用户点击这个 item 的时候,能够显示一个泡泡出来,泡泡的布局文件是一个 linearlayout,布局文件里有三个控件,两个 ImageView中间加一个 TextView,两边的一个用来显示路线,一个用作搜索,加载这个布局后,设置泡泡的信息然后添加到 mapView 中。会覆盖 onTap 这个方法,在处理 onTap 时更

13、新Layout,利用 LayoutParams 传递点位信息,同时可以获取标题信息,设置给再点击条目的时候,就能够显示这个泡泡了。知识点十二:搜索地图里也集成了很多搜索服务,比如说位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索这些。搜索里有两个的类 MKSearch 和 MKSearchListener。要实现搜索功能,首先要初始化 MKSearch 类,然后通过它的 init 方法搜索结果的对象MKSearchListener,来实现异步搜索服务。然后通过自定义 MySearchListener实现类,处理不同的回调方法,获得搜索结果。效果十三:在一个圆形区域内进行点搜索比如搜多

14、本公司周边的饭店,poiSearchNearBy 方法,在这个方法里传入以及所要搜索的范围。结果的处理要在 MKSearchListener 的 onGetPoiResult方法中,在该方法中可以通过传递的 type 值来区分是范围搜索还是城市检索。之后的处理是先判断服务器是否返回有效数据,然后创建 poi 覆盖物,再将服务器返回数据添加到 poi 覆盖物中,然后添加覆盖物到 MapView,最后刷新MapView 就实现了搜索的功能,显示要搜索的信息。要搜索的内容,公司的点要调用 MKSearch 对象的TextView 。这时候,当条目被点击的时候,效果十四:在一个矩形区域内进行点的搜索为

15、什么要有这样的一个搜索呢?市面上有这样的应用,在地图上画一条线,要求在这条线的附近搜索想要找的东西。这时候的处理是将这条曲线的两个端点作为圆形区域搜索,而把线的部分作为矩形区域来搜索。矩形搜索也是会经常用到的。矩形搜索所用到的 api 是 poiSearchInbounds,和圆形搜索类似,只是在搜索的时候变为矩形,在方法中传入搜索,左下角地理坐标和左上角地理坐标。通过这两个坐标,就能得到所需要的矩形。区域设置好后,结果的处理依然是在 MKSearchListener 的 onGetPoiResult 方法中,处理的方式不变。效果十五:全城搜索全城搜索使用到的方法是 poiSearchInCi

16、ty,这里只需要传进来两个参数,一个是城市的名字,一个是搜索的。在这里对返回的结果要做处理,因为对于一个城市,所搜索的内容对应的地方可能很多,所以这里要做分页处理。在处理分页的时候,关注几点内容,当前页、总页数、录数以及每一页所显示的条目。这些数据都可以从 MKPoiResult 这个类中获取到,然后获取当前页的所有点,就可以实现全城搜索的分页显示了。要注意的是要在显示下一页的时候,将当前页显示的 overlay 清空。还可以在调用这个类中的设置每页容量的方法。效果十六:关于路线的搜索-驾车路线搜索调用 MKSearch 里的 drivingSearch 方法,传进来起点和终点的城市名,搜索的

17、起点位置和终点位置,还可以指定途径点。这里要注意 MKPlanNode 内容的设置:可以使用和地名,需要输入准确的名称,可以通过 setDrivingPolicy(policy) 来设置驾车路线规划策略。结果的处理在 MKSearchListener 的 onGetDrivingRouteResult 方法中。效果十七:步行路线搜索调用 MKSearch 里的 walkingSearch 方法,传进来起点和终点的城市名,搜索的起点位置和终点位置,还可以指定途径点。这里要注意 MKPlanNode 内容的设置:可以使用和地名,需要输入准确的名称,可以通过。结果的处理在 MKSearchListe

18、ner 的onGetWalkingRouteResult 方法中。十八:换乘路线调用 MKSearch 的 transitSearch 方法,传入城市名,搜索的起点和终点,通过setTransitPolicy 设置路线规划策略结果处理在 MKSearchListener 类的 onGetTransitRouteResult 方法中,MKPlanNode 可以使用 name 进行搜索.在搜索时还要进行新的地图中心点的设置,使用 MapController 里的setCenter方法,还要使用 MapController 里的 enableClick 方法是点击的时候提示换乘信息。这样就实现了换乘

19、路线的搜索。效果十九:定位定位到自己的位置,对于这个功能,地图的 API 中有告诉怎么去写定位的 Demo,里面说的第一步是导入库文件,也就是把 sdkjar 包拷贝到工程的 libs 里,为了避免各个应用公用一个 service 出现的权限问题,还要在应用的配置文件中配置自己单独拥有的 service。添加一些必要的权限。这里需要服务器,使用到的类是 LocationCnt,有一个负责显示用户当前位置的 Overlay,即 MyLocationOverlay,MyLocationOverlay 只负责显示位置,位置数据请使用定位SDK 获取,将获取的位置数据放在一个 LocationData

20、 结构中并用该结构设置MyLcationOverlay 的数据源,即可创建 MyLocationOverlay。然后就是 LocationData 数据获取,先要创建器,当获取到位置信息时,将信息添加到 LocationData 中,器需要实现 BDLocationListener 接口,在这里有两个方法需要实现:1.接收异步返回的定位结果,参数是 BDLocation 类型参数。2.接收异步返回的 POI 查询结果,参数是 BDLocation 类型参数。然后是的设置:先创建 LocationCnt 对象,并registerLocationListener设置定位参数(LocationCnt

21、Option):定位模式(单次定位,定时定位),返回坐标类型,是否打开 GPS 等等。通过 LocationCnt 的 start、stop 控制获取,在做中间可以手动发起定位的请求 requestLocation。(在地图移动版 API 中,提供一个重要的特色功能:定位,通过这个功能,能获取到用户当前所在位置。在程序中,如果使用此功能,必须GPS 和网络的使用权限。在获取用户位置时,优先使用 GPS 进行定位;如果 GPS 定位没有打开或者没有可用位置信息,则会通过判断网络是否连接(即确认是否能上网,不论是连接 2G/3G 或 Wi-Fi 网络),如果是,则通过请求网络定位服务,返回网络定位结果。为了使获得的网络定位结果更加精确,请打开的 Wi-Fi 开关。目前系统自带的网络定位服务精度低,且服务不稳定、精度低,并且从未来的趋势看,定位是不可控的(移动公司随时可能更改以定位服务),而 Wi-Fi 定位则不然,它是一种精度更高、不受的定位方法。国内其它使用Wi-Fi 定位的地图,Wi-Fi 定位基本不可用,的定位服务量化指标优秀,网络接口返回速度快(服务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论