정리노트/팀프로젝트
네이버 길찾기 경유지 추가 코드 백업
망고고래
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;
}