前言华为Map Kit提供的门路布局API是一套以HTTPS模式提供的步行、骑行、驾车门路布局以及行驶间隔计算接口,通过JSON格局返回门路查问数据,提供门路布局能力。
门路布局具体提供如下性能:
步行门路布局 API提供100km以内的步行门路布局能力。骑行门路布局 API提供100km以内的骑行门路布局能力。驾车门路布局 API提供驾车门路布局能力,反对以下性能:
-反对一次申请返回多条路线,最多反对3条路线。 -最多反对5个途经点。 -反对将来出行布局。 -反对依据实时路况进行正当路线布局。场景用车服务:利用即时和将来出行路线布局为订单提供精确的价格预估。在派单场景中,利高性能批量达到工夫预估(ETA)服务,晋升派单效率。
物流:利用驾车和骑行路线布局,为支支线物流和末端配送提供精确的路线布局、耗时预估和路线免费预测。
游览:用户在预约酒店、设计游览线路时,通过路线布局剖析酒店、景点、交通站点之间的路线间隔,帮忙用户更高效布局行程。
开发前筹备l 门路布局服务应用前,须要在开发者联盟网站上获取API KEY。
阐明如果API KEY蕴含特殊字符,则须要进行encodeURI编码。例如:原始API KEY:ABC/DFG+ ,转换后果: ABC%2FDFG%2B。
l 在AndroidManifest.xml文件外面申请拜访网络权限
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />代码开发关键步骤初始化map,用于门路布局后果的展现private MapFragment mMapFragment;private HuaweiMap hMap;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_directions); mMapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapfragment_mapfragmentdemo); mMapFragment.getMapAsync(this);}获取用户以后地位,作为门路布局的终点private void getMyLocation() { Task<Location> locationTask = LocationServices.getFusedLocationProviderClient(this).getLastLocation(); locationTask.addOnCompleteListener(param0 -> { if (param0 != null) { Location location = param0.getResult(); double Lat = location.getLatitude(); double Lng = location.getLongitude(); myLocation = new LatLng(Lat, Lng); Log.d(TAG, " Lat is : " + Lat + ", Lng is : " + Lng); CameraUpdate CameraUpdate = CameraUpdateFactory.newLatLng(myLocation); hMap.moveCamera(CameraUpdate); } }).addOnFailureListener(param0 -> Log.d(TAG, "lastLocation is error"));}增加map长按事件,用于响应用户设定的门路布局起点hMap.setOnMapLongClickListener(latLng -> { if (null != mDestinationMarker) { mDestinationMarker.remove(); } if (null != mPolylines) { for (Polyline polyline : mPolylines) { polyline.remove(); } } enableAllBtn(); MarkerOptions options = new MarkerOptions().position(latLng).title("dest"); mDestinationMarker = hMap.addMarker(options); mDestinationMarker.setAnchor(0.5f,1f); StringBuilder dest = new StringBuilder(String.format(Locale.getDefault(), "%.6f", latLng.latitude)); dest.append(", ").append(String.format(Locale.getDefault(), "%.6f", latLng.longitude)); ((TextInputEditText)findViewById(R.id.dest_input)).setText(dest); mDest = latLng;});
...