/** * 根据ACC状态处理经纬度坐标, 防止停车坐标偏移 * * @param dataMap * @param vid * @param commandType 缓存车辆经纬度坐标,当ACC总电源关闭时,就取上一次的经纬度, 防止停车坐标偏移。 */ private void processCoordinatesByACC(VehicleMessageBean vehicleMessage, String vid) { String tempStatus = vehicleMessage.getBaseStatus(); // 获取基础状态位 Coordinates coordinates = null; if (tempStatus != null) { coordinates = Cache.getTrackCoordinates(vid); // 获取轨迹坐标缓存 String binarystatus = Long.toBinaryString(Long.parseLong(tempStatus)); if (binarystatus.endsWith("0")) { // 判断ACC关 // 取上一次车辆经纬度 - 缓存为空就缓存当前经纬度,不为空就替换数据包中的经纬度 if (coordinates == null) { long lon = vehicleMessage.getLon(); long lat = vehicleMessage.getLat(); long maplon = vehicleMessage.getMaplon(); long maplat = vehicleMessage.getMaplat(); coordinates = new Coordinates(); coordinates.setLon(lon); coordinates.setLat(lat); coordinates.setMaplon(maplon); coordinates.setMaplat(maplat); Cache.setTrackCoordinates(vid, coordinates); } else { vehicleMessage.setLat(coordinates.getLat()); vehicleMessage.setLon(coordinates.getLon()); vehicleMessage.setMaplat(coordinates.getMaplat()); vehicleMessage.setMaplon(coordinates.getMaplon()); } } else { // 缓存车辆经纬度 - 缓存为空就创建新坐标对象缓存,不为空就替换原经纬度 if (coordinates != null) { Cache.removeTrackCoordinates(vid); } } } }