概述 最后更新时间: 2021年11月04日
重要:由于个人信息保护法的实施,从导航8.1.0版本起对旧版本SDK不兼容,请务必确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口,且在初始化时需要对抛出的异常进行捕获,否则可能导致编译不通过等异常情况。具体可参考开发指南-其他配置注意事项-隐私合规接口说明传入相关参数。
Android导航SDK是一款针对在线导航的产品,产品功能涵盖了路径规划、专业导航、UI界面定制、导航组件、货车导航等。并且,导航路径规划与实时交通信息相结合,力求为用户提供更加合理、准确、人性化的导航服务。应用场景包括但不限于O2O、网约车出行、货运物流快递等。
在您接入SDK的前中后整个过程中,我们都会提供全方位的支持,包括官网文档、官方Demo、商务合作、工单、大客户钉钉群、现场支持等。
面向的读者
Android导航SDK是提供给具有一定Android编程经验和了解面向对象概念的读者使用的。
- 模拟导航
protected NaviLatLng mEndLatlng = new NaviLatLng(40.084894,116.603039); protected NaviLatLng mStartLatlng = new NaviLatLng(39.825934,116.342972); protected final List<NaviLatLng> sList = new ArrayList<NaviLatLng>(); protected final List<NaviLatLng> eList = new ArrayList<NaviLatLng>(); protected List<NaviLatLng> mWayPointList = new ArrayList<NaviLatLng>(); @Override public void onInitNaviSuccess() { super.onInitNaviSuccess(); sList.add(mStartLatlng); eList.add(mEndLatlng); int strategy = 0; strategy = mAMapNavi.strategyConvert(true, false, false, false, false); AMapCarInfo carInfo = new AMapCarInfo(); mAMapNavi.calculateDriveRoute(sList, eList, mWayPointList, strategy); } @Override public void onCalculateRouteSuccess(AMapCalcRouteResult aMapCalcRouteResult) { super.onCalculateRouteSuccess(aMapCalcRouteResult); mAMapNavi.startNavi(NaviType.EMULATOR); }
- 导航组件
LatLng p2 = new LatLng(39.917337, 116.397056);//故宫博物院 LatLng p3 = new LatLng(39.904556, 116.427231);//北京站 AmapNaviParams params = new AmapNaviParams(new Poi("北京站", p3, ""), null, new Poi("故宫博物院", p2, ""), AmapNaviType.DRIVER); params.setUseInnerVoice(true); AmapNaviPage.getInstance().showRouteActivity(getApplicationContext(), params, IndexActivity.this);
- 货车导航组件
LatLng p2 = new LatLng(39.917337, 116.397056);//故宫博物院 LatLng p3 = new LatLng(39.904556, 116.427231);//北京站 AmapNaviParams params = new AmapNaviParams(new Poi("北京站", p3, ""), null, new Poi("故宫博物院", p2, ""), AmapNaviType.DRIVER); params.setUseInnerVoice(true); AmapNaviPage.getInstance().showRouteActivity(getApplicationContext(), params, IndexActivity.this);
- AMapNaviView完全自定义UI和图面
private TextView textNextRoadDistance;//下个路口距离 private TextView textNextRoadName;//下个路名 private NextTurnTipView nextTurnTipView;//转向箭头,Demo中开源 /** ------- 导航基本信息的回调 ----- */ @Override public void onNaviInfoUpdate(NaviInfo naviInfo) { super.onNaviInfoUpdate(naviInfo); /** * 更新路口转向图标 */ if(naviInfo.getIconBitmap() != null){ nextTurnTipView.setImageBitmap(naviInfo.getIconBitmap()); }else{ nextTurnTipView.setIconType(naviInfo.getIconType()); } /** * 更新下一路口 路名及 距离 */ textNextRoadName.setText(naviInfo.getNextRoadName()); textNextRoadDistance.setText(NaviUtil.formatKM(naviInfo.getCurStepRetainDistance())); } private DriveWayLinear mDriveWayView;//车道信息,Demo中开源 /** ----- start 车道信息的回调 start ------- */ @Override public void showLaneInfo(AMapLaneInfo aMapLaneInfo) { mDriveWayView.setVisibility(View.VISIBLE); mDriveWayView.buildDriveWay(aMapLaneInfo); } private TrafficProgressBar mTrafficBarView;//路况条,Demo中开源 @Override public void onNaviInfoUpdate(NaviInfo naviInfo) { super.onNaviInfoUpdate(naviInfo); int allLength = mAMapNavi.getNaviPath().getAllLength(); /** * 导航路况条 更新 */ List<AMapTrafficStatus> trafficStatuses = mAMapNavi.getTrafficStatuses(0, 0); mTrafficBarView.update(allLength, naviInfo.getPathRetainDistance(), trafficStatuses); } /** * 自车位置类 */ CarOverlay carOverlay;//自车类,Demo中开源 carOverlay = new CarOverlay(AllCustomCarRouteActivity.this, mAMapNaviView); /** * GPS 定位信息的回调函数 * @param location 当前定位的GPS信息 */ @Override public void onLocationChange(AMapNaviLocation location) { if (carOverlay != null && location != null) { carOverlay.draw(mAMapNaviView.getMap(), new LatLng(location.getCoord().getLatitude(), location.getCoord().getLongitude()), location.getBearing()); } } private ZoomInIntersectionView mRealCrossView;//实景图,Demo开源 private AMapModeCrossOverlay mModeCrossView;//模型图,Demo开源 @Override public void showCross(AMapNaviCross aMapNaviCross) { mRealCrossView.setVisibility(View.VISIBLE); mRealCrossView.setIntersectionBitMap(aMapNaviCross); } @Override public void hideCross() { mRealCrossView.setVisibility(View.GONE); } @Override public void showModeCross(AMapModelCross aMapModelCross) { try { mModeCrossView.showCrossOverlay(aMapModelCross.getPicBuf1()); } catch (Throwable e) { e.printStackTrace(); } } @Override public void hideModeCross() { mModeCrossView.hideCrossOverlay(); } private AMapCameraOverlay cameraOverlay;//摄像头实例,Demo开源 @Override public void updateCameraInfo(AMapNaviCameraInfo[] aMapCameraInfos) { if (cameraOverlay != null) { cameraOverlay.draw(mAMapNaviView.getMap(), aMapCameraInfos); } }
兼容性
v6.4.0及以上版本支持Android 6.0及以上系统
给开发者的建议
对于高德开放平台提供的地图API/SDK,若您以非商业目的使用,则均可免费使用 。若您以商业目的使用,则您需事先从高德获取商用授权。您需要先申请Key,才能使用该服务。关于具体使用规则,请参阅《高德地图开放平台服务协议》获得详细信息。