if (mAMapNavi != null) { mAMapNavi.setCarInfo(carInfo); // 起点信息 NaviPoi start = new NaviPoi("龙城花园", null, "B000A8UF3J"); // 终点信息 NaviPoi end = new NaviPoi("北京大学", null, "B000A816R6"); // 途经点信息 List<NaviPoi> poiList = new ArrayList(); LatLng p1 = new LatLng(39.993266, 116.473193);//首开广场 LatLng p2 = new LatLng(39.917337, 116.397056);//故宫博物院 LatLng p3 = new LatLng(39.904556, 116.427231);//北京站 poiList.add(new NaviPoi("首开广场", p1, "")); poiList.add(new NaviPoi("故宫博物院", p2, "")); poiList.add(new NaviPoi("北京站", p3, "")); int strategy = mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, true); marker = aMap.addMarker(new MarkerOptions() .position(p1) .icon(BitmapDescriptorFactory.fromResource(R.drawable.start)) .anchor(1.5f, 1.5f)); // 自定义途经点的Marker样式 wayPoints.add(marker); mAMapNavi.calculateDriveRoute(start, end, poiList, strategy); Toast.makeText(getApplicationContext(), "策略:" + strategyFlag, Toast.LENGTH_LONG).show(); } 以上代码是高德导航路线规划添加途经点,帮我优化一下代码
时间: 2024-03-12 20:49:55 浏览: 64
可以考虑将以下代码:
```
marker = aMap.addMarker(new MarkerOptions()
.position(p1)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.start))
.anchor(1.5f, 1.5f));
// 自定义途经点的Marker样式
wayPoints.add(marker);
```
改为:
```
wayPoints.add(new NaviPoi("首开广场", p1, ""));
```
这样可以直接将途经点信息添加到 `poiList` 中,避免了创建 Marker 和添加到地图上的操作。同时,也可以减少冗余代码,让代码更加简洁清晰。
相关问题
@Override public MessageData importExcel(MultipartFile file, Integer carId){ try { String fileName = file.getOriginalFilename(); ImportParams params = new ImportParams(); //设置表头和标题所占行数 params.setHeadRows(1); // params.setTitleRows(1); //使用importExcel导入文件 List<CreateTOfficialCarStopWashCostImportReq> fileList = ExcelImportUtil.importExcel(file.getInputStream(), CreateTOfficialCarStopWashCostImportReq.class, params); ArrayList<TOfficialCarStopWashCost> list = new ArrayList<>(); for (CreateTOfficialCarStopWashCostImportReq item : fileList) { list.add(item.toEntity()); } //判断excel是否为空 if (list.isEmpty()) { return MessageData.buildFailed("excel为空!"); } for (TOfficialCarStopWashCost item : list) { if(carId==null){ CarInfo carInfo = carInfoMapper.queryByPlateNumber(item.getLicensePlate()); if(carInfo!=null){ item.setCarId(carInfo.getId()); } }else{ item.setCarId(carId); } item.setCreateTime(new Date()); item.setCreateUserId(ShiroUtil.getUserId()); MessageData save = this.save(item); } return MessageData.buildSuccess(); }catch (Exception e) { return MessageData.buildFailed("导入出错了!"); } } 翻译代码
这是一个Java代码,其中定义了一个名为 "importExcel" 的方法,它接受两个参数:一个名为 "file" 的MultipartFile类型的文件和一个名为 "carId" 的Integer类型的汽车ID。该方法的主要功能是从Excel文件中读取数据,并将其转换为TOfficialCarStopWashCost对象的列表,然后将每个对象保存到数据库中。如果传入的carId为null,则该方法会通过车牌号查找对应的carId。如果导入过程中出现错误,则返回一个包含错误信息的MessageData对象。
carinfo = ({self.brand}+""+{self.model}+""+{self.year}) TypeError: unsupported operand type(s) for +: 'set' and 'str'
这个错误的原因是你在字符串拼接时,将一个集合(set)类型的变量与字符串类型的变量相加,导致了类型不匹配的错误。你需要将集合类型转换为字符串类型后再进行字符串拼接。可以使用join()方法将集合中的元素转换为字符串并拼接起来,例如:
```
carinfo = ''.join([self.brand, self.model, self.year])
```
这样就可以将三个字符串类型的变量拼接成一个完整的字符串。
阅读全文