@Component @RefreshScope public class LocationUtil { private static final Logger log = LoggerFactory.getLogger(LocationUtil.class); /** * 地球半径,单位 m */ private static final double EARTH_RADIUS = 6371137.0; @Autowired private DeviceLocationAppServiceImpl deviceLocationAppService; @Autowired private RedisService redis; @Autowired private RestTemplate restTemplateOne; @Autowired private IssueInstructions issueInstructions; @Value("${gaudy.url}") private String path; @Value("${gaudy.key}") private String key; @Value("${gaudy.gpskey}") private String gpsKey; @Value("${gaudy.gpsurl}") private String gpsPath; private static DeviceLocationAppServiceImpl appService; private static RedisService redisService; private static RestTemplate restTemplate; private static String url; private static String gaudyKey; private static String GPS_Key; private static String gpsUrl; private static IssueInstructions iss; @PostConstruct public void init() { LocationUtil.restTemplate = restTemplateOne; LocationUtil.url = path; LocationUtil.redisService=redis; LocationUtil.gaudyKey =key; LocationUtil.GPS_Key=gpsKey; LocationUtil.appService =deviceLocationAppService; LocationUtil.gpsUrl =gpsPath; LocationUtil.iss=issueInstructions; } /** * 获取定位信息,返回定位信息的ID * @param positionInfoap * @return */ public static DeviceLocationApp getLocation(PositionInfo positionInfoap) { PositionResult positionResult =null; DeviceLocationApp app =null; GPSResult gpsResult =null; String locationType = "LBS"; int errCount=0; int gpsErrCount=0; if (StringUtils.isNull(positionInfoap.getGps())) { StringBuffer bts_buffer = new StringBuffer(); StringBuffer nearbts_buffer = new StringBuffer(); String bts = ""; String nearbts = ""; String cdma = positionInfoap.getBaseStationType(); String accesstype = "0"; String mmac = ""; String macs = ""; String wifiStr = ""; List<BaseStation> baseStations = positionInfoap.getBaseStation(); List<WIFI> wifis = positionInfoap.getWifi(); if (null != baseStations && baseStations.size() > 0) { //先请求基站定位(locationType 定位类型 WIFI 还是 LBS) if ("0".equals(positionInfoap.getBaseStationType())) {//是否 CDMA(0:否, 1:是) //cdma = positionInfoap.getBaseStationType(); // bts_buffer.append("&accesstype=").append(positionInfoap.getBaseStationType()); //基站信息 // //获取第一个基站信息 // BaseStation baseStation = baseStations.get(0); // bts_buffer.append("&mcc=").append(baseStation.getMcc()).append("&mnc=").append(baseStation.getMnc()).append("&lac=").append(baseStation.getLac()) // .append("&ci=").append(baseStation.getCi()); // bts_buffer.append("&signal=").append(signal); int signal = getSignal(baseStations.get(0).getRxlev()); //在遍历这个基站信息 for (int i = 0; i < baseStations.size(); i++) { int signal1 = getSignal(baseStations.get(i).getRxlev()); if (signal1 < signal) { bts = ""; bts = bts_buffer.append(baseStations.get(i).getMcc()).append(",").append(baseStations.get(i).getMnc()).append(",").append(baseStations.get(i).getLac()).append(",") .append(baseStations.get(i).getCi()).append(",").append(signal1).toString(); } else { bts = bts_buffer.append(baseStations.get(0).getMcc()).append(",").append(baseStations.get(0).getMnc()).append(",").append(baseStations.get(0).getLac()).append(",") .append(baseStations.get(0).getCi()).append(",").append(signal).toString(); } if (i != baseStations.size() - 1) { nearbts += nearbts_buffer.append(baseStations.get(i).getMcc()).append(",").append(baseStations.get(i).getMnc()).append(",").append(baseStations.get(i).getLac()).append(",") .append(baseStations.get(i).getCi()).append(signal1).append("|").toString(); } else { nearbts += nearbts_buffer.append(baseStations.get(i).getMcc()).append(baseStations.get(i).getMnc()).append(baseStations.get(i).getLac())
高德位置解析
最新推荐文章于 2024-08-01 15:05:06 发布