重要:为进一步采取加强对最终用户个人信息的安全保护措施,从地图sdk v7.5.0版本起,请开发者务必确保调用sdk任何接口前先调用隐私合规接口setagreeprivacy,否则可能会无法正常使用相关功能。具体可参考开发指南-开发注意事项-隐私合规接口说明
android地图sdk可用于android原生开发,支持地图展示(室内图、室外图)、地图交互、在地图上绘制、检索地图数据等功能。地图sdk提供丰富的点线面和模型绘制能力,满足各类业务场景的个性化需求。
publicclassmainactivityextendsactivity{privatemapview mmapview =null;@overrideprotectedvoidoncreate(bundle savedinstancestate){super.oncreate(savedinstancestate);setcontentview(r.layout.activity_main);//获取地图控件引用mmapview =(mapview)findviewbyid(r.id.bmapview);mbaidumap = mmapview.getmap();//显示卫星图层mbaidumap.setmaptype(baidumap.map_type_satellite);}@overrideprotectedvoidonresume(){super.onresume();//在activity执行onresume时必须调用mmapview. onresume ()mmapview.onresume();}@overrideprotectedvoidonpause(){super.onpause();//在activity执行onpause时必须调用mmapview. onpause ()mmapview.onpause();}@overrideprotectedvoidondestroy(){super.ondestroy();//在activity执行ondestroy时必须调用mmapview.ondestroy()mmapview.ondestroy();}}
@overridepublicvoidonbaseindoormapmode(boolean in,mapbaseindoormapinfo mapbaseindoormapinfo){if(in){// 进入室内图// 通过获取回调参数 mapbaseindoormapinfo 便可获取室内图信息,包含楼层信息,室内id等}else{// 移除室内图}}});//实现楼层间地图切换,展示不同楼层的室内图switchfloorerror switchfloorerror = mbaidumap.switchbaseindoormapfloor(strfloor, floorid);//上面代码中,strfloor表示室内图楼层,格式为f1,b1… strid 表示室内图id;返回值switchfloorerror 用于标识楼层切换错误信息, 具体如下://切换楼层成功switch_ok// 切换楼层, 室内id信息错误floor_info_error,//楼层溢出floor_overlflow,//切换楼层室内id与当前聚焦室内id不匹配focused_id_error,//切换楼层失败switch_error
/*** 初始化地图sdk*/publicclassdemoapplicationextendsapplication{@overridepublicvoidoncreate(){super.oncreate();//在使用sdk各组件之前初始化context信息,传入applicationcontextsdkinitializer.initialize(this);//自4.3.0起,百度地图sdk所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.//包括bd09ll和gcj02两种坐标,默认是bd09ll坐标。sdkinitializer.setcoordtype(coordtype.bd09ll);}}/***创建activity, 地图生命周期管理*/publicclassmainactivityextendsactivity{privatemapview mmapview =null;@overrideprotectedvoidoncreate(bundle savedinstancestate){super.oncreate(savedinstancestate);setcontentview(r.layout.activity_main);//获取地图控件引用mmapview =(mapview)findviewbyid(r.id.bmapview);//地图状态参数配置(经纬度是国外)mapstatus ms =newmapstatus.builder().zoom(10).target(newlatlng(51.50556,-0.07556)).build();mapstatusupdate u =mapstatusupdatefactory.newmapstatus(ms);//更新地图状态mbaidumap.animatemapstatus(u);}@overrideprotectedvoidonresume(){super.onresume();//在activity执行onresume时必须调用mmapview. onresume ()mmapview.onresume();}@overrideprotectedvoidonpause(){super.onpause();//在activity执行onpause时必须调用mmapview. onpause ()mmapview.onpause();}@overrideprotectedvoidondestroy(){super.ondestroy();//在activity执行ondestroy时必须调用mmapview.ondestroy()mmapview.ondestroy();}}
//创建markermarkeroptions ooa =newmarkeroptions().position(lla).icon(bda);//添加markermmarkera =(marker)(mbaidumap.addoverlay(ooa));privateanimationgetscaleanimation(){//创建缩放动画scaleanimation mscale =newscaleanimation(1f, 2f, 1f);//设置动画执行时间mscale.setduration(2000);//动画重复模式mscale.setrepeatmode(animation.repeatmode.restart);//动画重复次数mscale.setrepeatcount(1);//设置缩放动画监听mscale.setanimationlistener(newanimation.animationlistener(){@overridepublicvoidonanimationstart(){}@overridepublicvoidonanimationend(){}@overridepublicvoidonanimationcancel(){}@overridepublicvoidonanimationrepeat(){}});return mscale;}/*** 开启单边缩放动画 x或y方向*/publicvoidstartsinglescaleanimation(){//marker设置动画mmarkerg.setanimation(getsinglescaleanimation());//开启marker动画mmarkerg.startanimation();}
/*** 周边poi检索示例*/publicvoidnearbypoisearch(){//创建poi检索实例poisearch poisearch =poisearch.newinstance();//创建poi监听者ongetpoisearchresultlistener poilistener =newongetpoisearchresultlistener(){@overridepublicvoidongetpoiresult(poiresult result){//获取poi检索结果}......};//设置poi监听者该方法要先于检索方法searchnearby(poinearbysearchoption)前调用,否则会在某些场景出现拿不到回调结果的情况poisearch.setongetpoisearchresultlistener(poilistener);//设置请求参数poinearbysearchoption nearbysearchoption =newpoinearbysearchoption().keyword("餐厅")//检索关键字.location(center)//检索位置.pagenum(loadindex)//分页编号,默认是0页.pagecapacity(20)//设置每页容量,默认10条.radius(radius);//附近检索半径//发起请求poisearch.searchnearby(nearbysearchoption);//释放检索对象poisearch.destroy();}
/*** 驾车路线规划代码示例*/publicvoiddrivingroute(){//创建驾车线路规划检索实例;routeplansearch routeplansearch =routeplansearch.newinstance();//创建驾车线路规划检索监听者;ongetrouteplanresultlistener listener =newongetrouteplanresultlistener(){publicvoidongetdrivingrouteresult(drivingrouteresult result){//获取驾车线路规划结果}......};//设置驾车线路规划检索监听者,该方法要先于检索方法drivingsearch(drivingrouteplanoption)前调用,否则会在某些场景出现拿不到回调结果的情况routeplansearch.setongetrouteplanresultlistener(listener);//准备检索起、终点信息;plannode stnode =plannode.withcitynameandplacename("北京","龙泽");plannode ennode =plannode.withcitynameandplacename("北京","西单");//发起驾车线路规划检索;routeplansearch.drivingsearch((newdrivingrouteplanoption()).from(stnode).to(ennode));
//设置导航的起终点信息latlng startpt =newlatlng(40.047416,116.312143);latlng endpt =newlatlng(40.048424,116.313513);walknavilaunchparam param =newwalknavilaunchparam().stpt(startpt).endpt(endpt);// 使用步行导航前,需要初始化引擎初。walknavigatehelper.getinstance().initnaviengine(this,newiwengineinitlistener(){@overridepublicvoidengineinitsuccess(){log.d(ltag,"引擎初始化成功");routeplanwithparam();}@overridepublicvoidengineinitfail(){log.d(ltag,"引擎初始化失败");}});/*** 引擎初始化成功之后,发起导航算路。算路成功后,在回调函数中设置跳转至诱导页面。* 开始算路*/publicvoidrouteplanwithparam(){walknavigatehelper.getinstance().routeplanwithparams(param,newiwrouteplanlistener(){@overridepublicvoidonrouteplanstart(){log.d(ltag,"开始算路");}@overridepublicvoidonrouteplansuccess(){log.d(ltag,"算路成功,跳转至诱导页面");intent intent =newintent();intent.setclass(bnavimainactivity.this,wnaviguideactivity.class);startactivity(intent);}@overridepublicvoidonrouteplanfail(walkrouteplanerror error){log.d(ltag,"算路失败");}});}//初始化步行导航过程管理类walknavigatehelper mnavihelper =walknavigatehelper.getinstance();// 在导航页面wnaviguideactivity.this的oncreate方法中,调用mnavihelper.oncreate(wnaviguideactivity.this)创建诱导view。view view = mnavihelper.oncreate(wnaviguideactivity.this);if(view !=null){setcontentview(view);}// 开始导航mnavihelper.startwalknavi(wnaviguideactivity.this);//在步行导航页面对应的acticity的生命周期方法中分别调用walknavigatehelper类中的对应生命周期方法。@overrideprotectedvoidonresume(){super.onresume();mnavihelper.resume();}@overrideprotectedvoidonpause(){super.onpause();mnavihelper.pause();}@overrideprotectedvoidondestroy(){super.ondestroy();mnavihelper.quit();}//导航状态信息,主要包括导航开始、结束,导航过程中偏航、偏航结束、诱导信息(包含诱导默认图标、诱导类型、诱导信息、剩余距离、时间、振动回调等mnavihelper.setrouteguidancelistener(this,newiwrouteguidancelistener(){@overridepublicvoidonrouteguideiconupdate(drawable icon){//诱导图标更新}@overridepublicvoidonrouteguidekind(routeguidekind routeguidekind){//诱导枚举信息}@overridepublicvoidonroadguidetextupdate(charsequence charsequence,charsequence charsequence1){//诱导信息}@overridepublicvoidonremaindistanceupdate(charsequence charsequence){// 总的剩余距离}@overridepublicvoidonremaintimeupdate(charsequence charsequence){//总的剩余时间}@overridepublicvoidongpsstatuschange(charsequence charsequence,drawable drawable){//gps状态发生变化,来自诱导引擎的消息}@overridepublicvoidonroutefaraway(charsequence charsequence,drawable drawable){//偏航信息}@overridepublicvoidonrouteplanyawing(charsequence charsequence,drawable drawable){//偏航规划中的信息}@overridepublicvoidonreroutecomplete(){//重新算路成功}@overridepublicvoidonarrivedest(){//到达目的地}@overridepublicvoidonvibrate(){//震动}});}//设置诱导信息回调监听,此组件只提供导航过程中的文本输出,不包含语音播报功能,需要自行传入对应的语音回调,形成播报功能。建议使用百度语音识别服务sdk。//获取语音播报文本方法(注:该接口需要在startwalknavi方法之前调用,否则不会有回调):mnavihelper.setttsplayer(newibttsplayer(){/*** 诱导文本回调* @param s 诱导文本* @param b 是否抢先播报* @return*/@overridepublic int playttstext(string s, boolean b){return0;}});
//通过设置bikenavilaunchparam对象中的vehicle的值区分:vehicle :0:普通骑行导航 ; 1:电动车骑行导航,不设置vehicle的值时,默认为0 普通骑行导航。startpt =newlatlng(40.047416,116.312143);endpt =newlatlng(40.048424,116.313513);param =newbikenavilaunchparam().stpt(startpt).endpt(endpt).vehicle(0);// 使用骑行导航前,需要初始化骑行导航引擎。bikenavigatehelper.getinstance().initnaviengine(this,newibengineinitlistener(){@overridepublicvoidengineinitsuccess(){log.d(ltag,"引擎初始化成功");routeplanwithparam();}@overridepublicvoidengineinitfail(){log.d(ltag,"引擎初始化失败");}});/*** 算路设置起、终点参数,然后在回调函数中设置跳转至诱导页面* 开始算路*/publicvoidrouteplanwithparam(){param =newbikenavilaunchparam().stpt(startpt).endpt(endpt);bikenavigatehelper.getinstance().routeplanwithparams(param,newibrouteplanlistener(){@overridepublicvoidonrouteplanstart(){log.d(ltag,"开始算路");}@overridepublicvoidonrouteplansuccess(){log.d(ltag,"算路成功,跳转至诱导页面");intent intent =newintent();intent.setclass(bnavimainactivity.this,bnaviguideactivity.class);startactivity(intent);}@overridepublicvoidonrouteplanfail(bikerouteplanerror error){log.d(ltag,"算路失败");}});}// 获取诱导页面地图展示view//创建诱导view,并接收回调事件。在activity生命周期内调用诱导bikenavigatehelper对应的生命周期函数。view view = mnavihelper.oncreate(bnaviguideactivity.this);if(view !=null){setcontentview(view);}// 开始导航mnavihelper.startbikenavi(bnaviguideactivity.this);// 设置诱导监听, 主要包括导航开始、结束,导航过程中偏航、偏航结束、诱导信息(包含诱导默认图标、诱导类型、诱导信息、剩余距离、时间、振动回调等。mnavihelper.setrouteguidancelistener(this,newibrouteguidancelistener(){@overridepublicvoidonrouteguideiconupdate(drawable icon){}@overridepublicvoidonrouteguidekind(routeguidekind routeguidekind){}@overridepublicvoidonroadguidetextupdate(charsequence charsequence,charsequence charsequence1){}@overridepublicvoidonremaindistanceupdate(charsequence charsequence){}@overridepublicvoidonremaintimeupdate(charsequence charsequence){}@overridepublicvoidongpsstatuschange(charsequence charsequence,drawable drawable){}@overridepublicvoidonroutefaraway(charsequence charsequence,drawable drawable){}@overridepublicvoidonrouteplanyawing(charsequence charsequence,drawable drawable){}@overridepublicvoidonreroutecomplete(){}@overridepublicvoidonarrivedest(){}@overridepublicvoidonvibrate(){}@overridepublicvoidongetroutedetailinfo(bikeroutedetailinfo bikeroutedetailinfo){}});//设置诱导信息回调监听,此组件只提供导航过程中的文本输出,不包含语音播报功能,需要自行传入对应的语音回调,形成播报功能。建议使用百度语音识别服务sdk。//获取语音播报文本方法(注:该接口需要在startwalknavi方法之前调用,否则不会有回调):mnavihelper.setttsplayer(newibttsplayer(){/*** 诱导文本回调* @param s 诱导文本* @param b 是否抢先播报* @return*/@overridepublic int playttstext(string s, boolean b){return0;}});
在您使用百度android地图sdk之前,请先阅读并同意百度地图开放平台服务条款中的各项内容,并申请申请密钥(ak)才可使用。
您在使用中遇到任何问题,都可以通过反馈给我们,之后会有凯发k8官方旗舰厅的技术支持人员一对一为您处理问题。
目前百度地图android地图sdk境内服务对非商业目的使用的开发者不收取任何费用,开发者可自行放心下载使用。
如您以商业目的(包括但不限于对第三方用户收费、项目投标,以及其他直接或间接获取收益或利益)使用本平台服务,则用户须要事先获得本平台"商用授权"许可。 平台商用授权的授权对象为公司主体。授权成功后,您将会收到平台提供的书面版商用授权书(附带百度公司签章)。
商用授权可点击这里了解详情。商业目的产品使用前请参考使用须知。
下一篇
本篇文章对您是否有帮助?