您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > Android的百度地图开发
Android的百度地图开发Android进阶百度地图API平台介绍百度地图AndroidSDK是一套基于Android2.1(v1.3.5及以前版本支持android1.5以上系统)及以上版本设备的应用程序接口。可以使用该套SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。百度地图AndroidSDK提供的所有服务是免费的,接口使用无次数限制。您需申请密钥(key)后,才可使用百度地图AndroidSDK。任何非营利性产品请直接使用。百度地图API平台•百度地图API网址:•获取密钥申请新密钥及查看原先申请的密钥•开发指南在安卓平台上使用百度地图的开发指南•类参考地图库所提供的类及方法说明•相关下载开发所使用的相关包及说明示例下例申请key•点击获取密钥进入密钥申请页并阅读相关的使用条款•勾选已阅读并同意条款•填写应用名称•填写一下应用的相应功能及描述•输入验证码确定后密钥即可申请成功如何把API添加到我的Android工程中•在工程里新建libs文件夹(若不存在的话),将开发包里的baidumapapi_v2_1_1.jar拷贝到libs根目录下,将libapp_BaiduMapApplib_v2_1_1.so和libvi_voslib.so拷贝到libs\armeabi目录下•项目属性中JavaBuildPath-OrderandExport中,确定AndroidPrivateLibaries与AndroidDependencies这两项前面的选择框被选上后,点确定•菜单Project-clean重新编译项目后就可以正常使用地图中的功能进行编程了。•上图包中的liblockSDK3.1.jar及对应的so文件是用于定位与搜索功能的,如果不需要可以不加入到项目当中项目清单添加权限在Manifest中添加使用权限!--使用网络功能所需权限--uses-permissionandroid:name=android.permission.ACCESS_NETWORK_STATE/uses-permissionandroid:name=android.permission.INTERNET/uses-permissionandroid:name=android.permission.ACCESS_WIFI_STATE/uses-permissionandroid:name=android.permission.CHANGE_WIFI_STATE/!--SDK离线地图和cache功能需要读写外部存储器--uses-permissionandroid:name=android.permission.WRITE_EXTERNAL_STORAGE/!--获取设置信息和详情页直接拨打电话需要以下权限--uses-permissionandroid:name=android.permission.CALL_PHONE/uses-permissionandroid:name=android.permission.READ_PHONE_STATE/!--使用定位功能所需权限,demo已集成百度定位SDK,不使用定位功能可去掉以下6项--uses-permissionandroid:name=android.permission.ACCESS_FINE_LOCATION/permissionandroid:name=android.permission.BAIDU_LOCATION_SERVICE/uses-permissionandroid:name=android.permission.BAIDU_LOCATION_SERVICE/uses-permissionandroid:name=android.permission.ACCESS_COARSE_LOCATION/uses-permissionandroid:name=android.permission.ACCESS_MOCK_LOCATION/uses-permissionandroid:name=android.permission.ACCESS_GPS/项目清单添加权限•在清单文件中添加对屏幕的支持activityandroid:name=com.dfrz.map.DFRZMapActivityandroid:configChanges=orientation|keyboardHidden|screenSizeandroid:label=@string/app_nameandroid:screenOrientation=sensor/activity•对需要加载地图的Activity进行属性设置supports-screensandroid:anyDensity=trueandroid:largeScreens=trueandroid:normalScreens=trueandroid:resizeable=trueandroid:smallScreens=true/项目清单添加权限•在布局中添加百度地图显示控件com.baidu.mapapi.map.MapViewandroid:id=@+id/bmapsViewandroid:layout_width=match_parentandroid:layout_height=wrap_contentandroid:layout_weight=1android:clickable=true/这个就是加载百度地图的控件框,这个布局你可以根据自己的需要进行调整,或是放置到你的Activity需要的地方去。此控件需要接收到点击事件,所以需要把clickable设置成true。MapActivity基类•管理显示在MapView类中activity处理逻辑的基础类。MapActivity这个基类不是必须的,但一般情况下,我们会把地图配置处相关处理代码放在基类中,然后在实现此基类的子类中专心实现业务的相关逻辑,而不是把大量的地图设置与业务逻辑混杂在一起。它的责任包括:–Activity及地图生命周期管理–地图控制相关配置–在一个MapView后面创建和销毁服务–定位结果返回后的处理BMapManager•地图、定位、搜索功能都需要用BMapManager对象来管理,BMapManager提供四个接口:init()、start()、stop()、destroy()。在应用程序里生成BMapManager对象并初始化,在程序退出时调用destroy(),在需要使用sdk功能的Activity的onCreate()方法里调用start()方法,onDestroy()方法里调用stop()方法,或者onResume()/onPause()分别调用start()和stop()。•常用方法:–destroy():在程序退出前调用–booleaninit(java.lang.StringstrKey,MKGeneralListenerlistener)初始化地图引擎,需要送入申请的百度地图Key–booleanstart():开启百度地图API–booleanstop():终止百度地图API,调用此函数后,不会再发生回调MKGeneralListener•一般事件通知接口,该接口返回网络状态,授权验证等结果,用户需要实现该接口以处理相应事件。•voidonGetPermissionState(intiError):–返回授权验证错误,iError为错误号,值为300,验证失败•voidonGetNetworkState(intiError)–返回网络错误–参数:iError-错误号MapView一个显示地图的视图控件,当被焦点选中时,它能捕获按键事件和触摸手势去平移和缩放地图–setBuiltInZoomControls(booleanon):设置是否启用内置的缩放控件–getController():返回地图的MapController,这个对象可用于控制和驱动平移和缩放–setDoubleClickZooming(booleanbDoubleClickZooming):设置mapview是否支持双击放大效果–getOverlays():获取当时地图控件中的已有图层–refresh():刷新此地图控件MapController•处理地图移动和缩放的工具类–setCenter(GeoPointpoint):设置地图视图中心点,必须设置中心点才能显示地图–setZoom(intzoomLevel):设置地图的缩放级别。[3-19]值越大地图上建筑越大–zoomIn/Out():放大/缩小一个级别–animateTo(GeoPointp[,Messagem]):以动画的方式将地图视图移到到指定点上,结果后发送一个指定的消息。•GeoPoint(intlatitudeE6,intlongitudeE6)普通经纬度要乘以106–表示一个地理坐标点,存放经度和纬度,以微度的整数形式存储LocationClient•定位处理功能的核心类–registerLocationListener(BDLocationListener)接收到定位数据后可由指定监听器中的onReceiveLocation(BDLocation)的方法来接收相关的数据并做相关的处理–构造:newLocationClient(getApplicationContext())–setLocOption(LocationClientOption)设置定位的参数–start()启动定位功能,此功能是持续的,可以定义间隔刷新时间–stop()结束定位功能,但前面设置的定位参数不会消失,可以再启动–requestLocation()发起异步定位请求,如果位置没有变化,不会发起网络请求,直接返回上次的位置。(2次间隔需要大于1秒)LocationClientOption•设置定位功能的定位方式–disableCache(boolean)真表示禁用缓存定位–setOpenGPS(boolean)是否使用GPS定位,前提是手机打开了GPS定位–setAddrType(String)当字串为all时返回此位置地址信息,其它不返回–setCoorType(String)设置返回坐标的格式•gcj02-国测局bd09百度墨卡托bd0911百度经纬坐标(手机默认)–setScanSpan(int)定时定位的时间间隔(ms)•此值大于1000时,每隔此值指定的时间就会发起一次定位•此值小于1000时或不设置此值时,调用一次requestLocation()方法则定位一次LocationData•保存用户位置的数据实例–doublelatitude纬度值–doublelongitude经度值–floataccuracy定位精度–floatdirectionGPS定位时的方向角度–intsatellitesNumGPS卫星的数量–speedGPS定位时速度MapActivity代码protectedvoidonDestroy(){mapView.destroy();if(mapManager!=null){mapManager.destroy();mapManager=null;}super.onDestroy();}protectedvoidonPause(){mapView.onPause();if(mapManager!=null)mapManager.stop();super.onPause();}protectedvoidonResume(){mapView.onResume();if(mapManager!=null)mapM
本文标题:Android的百度地图开发
链接地址:https://www.777doc.com/doc-5279176 .html