| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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<ArrayList<Double>> 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<Step> steps = root.routes.get(0).legs.get(0).steps;
- ArrayList<ArrayList<Double>> coordinates = new ArrayList<>();
- for (Step step : steps) {
- ArrayList<Intersection> intersections = step.intersections;
- for (Intersection intersection : intersections) {
- ArrayList<Double> location = new ArrayList<>();
- location.add(intersection.location.get(1));
- location.add(intersection.location.get(0));
- coordinates.add(location);
- }
- }
- System.out.println(coordinates);
- return coordinates;
- }
- }
|