package com.deliveryproject.easydelivery; import com.deliveryproject.easydelivery.OSMRClass.Intersection; import com.deliveryproject.easydelivery.OSMRClass.Root; import com.deliveryproject.easydelivery.OSMRClass.Step; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; @CrossOrigin @RestController public class MainController { @PreAuthorize("hasRole('User')") @GetMapping("/route/nodes") @ResponseBody public ArrayList> getNodesBetweenTwoCoordinates(@RequestParam double lon1, @RequestParam double lat1, @RequestParam double lon2, @RequestParam double lat2) throws IOException { System.out.println(lon1); String url = "http://router.project-osrm.org/route/v1/driving/" + lon1 + "," + lat1 + ";" + lon2 + "," + lat2 + "?steps=true&geometries=geojson"; System.out.println(url); URL osrmEndpoint = new URL(url); HttpURLConnection connection = (HttpURLConnection) osrmEndpoint.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Content-Type", "application/json"); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); ObjectMapper om = new ObjectMapper(); Root root = om.readValue(response.toString(), Root.class); ArrayList steps = root.routes.get(0).legs.get(0).steps; ArrayList> coordinates = new ArrayList<>(); for (Step step : steps) { ArrayList intersections = step.intersections; for (Intersection intersection : intersections) { ArrayList location = new ArrayList<>(); location.add(intersection.location.get(1)); location.add(intersection.location.get(0)); coordinates.add(location); } } System.out.println(coordinates); return coordinates; } }