정리노트/팀프로젝트

네이버 길찾기 경유지 추가 코드 백업

망고고래 2024. 3. 18. 17:12

여행 코스 전체의 이동 거리 및 소요 시간 등의 정보를 얻으려고 만들었던 코드

경유지 최적화가 자동으로 되는 건지 코스 스케줄별로 각각 구해서 더했을 경우와 결과가 크게 달라서 폐기

contentSeqArray로 LatLngList를 구해서 호출

	@Override
	public URL getCourseInfoUrlContainsWaypoints(List<LatLng> latLngList) {
		System.out.println("courseRepository.getCourseInfoUrlContainsWaypoints() 도착");
		
	    if (latLngList == null || latLngList.size() < 2) {
	        // latLngList가 null이거나 원소가 2개 미만인 경우
	        return null;
	    }
		
	    LatLng startLatLng = latLngList.get(0);
	    LatLng goalLatLng = latLngList.get(latLngList.size() - 1);
	    
	    if (startLatLng == null || goalLatLng == null) {
	        // LatLng 객체가 null인 경우
	        return null;
	    }
	    
		String startLongitude = latLngList.get(0).getLng();
		String startLatitude = latLngList.get(0).getLat();
		String goalLongitude = latLngList.get(latLngList.size() -1).getLng();
		String goalLatitude = latLngList.get(latLngList.size() -1).getLat();
		String startUrl = "https://naveropenapi.apigw.ntruss.com/map-direction/v1/driving?start="
				+ startLongitude + "," 
				+ startLatitude;
		String goalUrl = "&goal=" 
				+ goalLongitude + "," 
				+ goalLatitude + "&option=traoptimal";
		String waypointUrl = "&waypoints=" + getWaypointStringByLatLngList(latLngList);
		System.out.println("waypoingUrl: " + waypointUrl);
		String requestUrl =  startUrl + waypointUrl + goalUrl; 
		
		URL url = null;
		try {
			url = new URL(requestUrl);
		} catch (MalformedURLException e) {
	        e.printStackTrace();
	        return null;
		}
		return url;
	}

	public String getWaypointStringByLatLngList(List<LatLng> latLngList) {
		System.out.println("getWaypointStringByLatLngList() 도착");
		String lat;
		String lng;
		String waypointString = null;
		for(int i = 1; i < latLngList.size() -1; i++) {
			lng = latLngList.get(i).getLng();
			lat = latLngList.get(i).getLat();
			if(i == 1)
				waypointString = lng + "," + lat;
			else
				waypointString = waypointString + ":" + lng + "," + lat;
		}
		return waypointString;
	}

 

	@Override
	public StringBuffer getStringResponse(URL url){
		System.out.println("getUrlResponse() 도착");
		
	    if (url == null) {
	        // url이 null이면 null을 반환하거나 예외 처리를 수행
	        return null; // 예시로 null 반환
	    }
		
		HttpURLConnection con;
		BufferedReader br;
		StringBuffer urlResponse = null;
		try {
			con = (HttpURLConnection)url.openConnection();
			con.setRequestMethod("GET");
			con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", "");
			con.setRequestProperty("X-NCP-APIGW-API-KEY", "");
			int responseCode = con.getResponseCode();
			
			if(responseCode == 200) {
				br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
			}else {
				br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
			}
			String line;
			urlResponse = new StringBuffer();
			while((line = br.readLine()) != null) {
				urlResponse.append(line);
			}
			br.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return urlResponse;
	}

	@Override
	public CourseInfo getInfoFromDrivingJSON(StringBuffer urlResponse, CourseInfo courseInfo) {
		System.out.println("getInfoFromDrivingJSON() 도착");
		if(urlResponse == null)
			return null;
		
		JSONObject responseObject = new JSONObject(urlResponse.toString());
		JSONObject route = responseObject.getJSONObject("route");
		JSONArray traoptimal = route.getJSONArray("traoptimal");
		JSONObject traoptimalObject = traoptimal.getJSONObject(0);
		JSONObject summary = traoptimalObject.getJSONObject("summary");
		
		String duration = summary.get("duration").toString();
		String tollFare = summary.get("tollFare").toString();
		String distance = summary.get("distance").toString();
		String fuelPrice = summary.get("fuelPrice").toString();
		
		int duration_int = Integer.parseInt(duration);	
		courseInfo.setDuration(duration_int/(60*1000));
		courseInfo.setDistance(Integer.parseInt(distance));
		courseInfo.setTollFare(Integer.parseInt(tollFare));
		courseInfo.convertDuration(courseInfo.getDuration());
		courseInfo.convertDistance(courseInfo.getDistance());
		courseInfo.setConvertedTollFare(courseInfo.convertPrice(courseInfo.getTollFare()));
		courseInfo.setFuelPrice(Integer.parseInt(fuelPrice));
		courseInfo.setConvertedFuelPrice(courseInfo.convertPrice(courseInfo.getFuelPrice()));
		return courseInfo;
	}