diff --git a/src/main/java/seng202/group9/Core/FlightPath.java b/src/main/java/seng202/group9/Core/FlightPath.java index e0df38a..36b82dc 100644 --- a/src/main/java/seng202/group9/Core/FlightPath.java +++ b/src/main/java/seng202/group9/Core/FlightPath.java @@ -7,6 +7,7 @@ public class FlightPath { private ArrayList flightPoints; private String departureAirport; private String arrivalAirport; + private RoutePath routePath; /** * @@ -88,4 +89,14 @@ public class FlightPath { this.flightPoints.add(flightPoints.get(i)); } } + + public RoutePath getRoutePath(){ + if (routePath == null){ + routePath = new RoutePath(); + for (FlightPoint point: flightPoints){ + routePath.addPosition(new Position(point.getLatitude(), point.getLongitude())); + } + } + return routePath; + } } diff --git a/src/main/java/seng202/group9/Core/Position.java b/src/main/java/seng202/group9/Core/Position.java new file mode 100644 index 0000000..555035d --- /dev/null +++ b/src/main/java/seng202/group9/Core/Position.java @@ -0,0 +1,14 @@ +package seng202.group9.Core; + +/** + * Created by fwy13 on 17/09/16. + */ +public class Position { + public double lat; + public double lng; + + public Position(double lat, double lng) { + this.lat = lat; + this.lng = lng; + } +} \ No newline at end of file diff --git a/src/main/java/seng202/group9/Core/Route.java b/src/main/java/seng202/group9/Core/Route.java index 07b975d..ffff49c 100644 --- a/src/main/java/seng202/group9/Core/Route.java +++ b/src/main/java/seng202/group9/Core/Route.java @@ -18,6 +18,7 @@ public class Route { private Airport sourceAirport; private Airport destinationAirport; private Airline airline = null; + private RoutePath routePath = null; /** * Constructor for pulling from database @@ -246,6 +247,17 @@ public class Route { throw new DataException("This Route already exists."); } } + + public RoutePath getRoutePath(){ + if (routePath == null) { + routePath = new RoutePath( + new Position(getSourceAirport().getLatitude(), getSourceAirport().getLongitude()), + new Position(getDestinationAirport().getLatitude(), getDestinationAirport().getLongitude()) + ); + } + return routePath; + } + @Override public String toString(){ diff --git a/src/main/java/seng202/group9/Core/RoutePath.java b/src/main/java/seng202/group9/Core/RoutePath.java new file mode 100644 index 0000000..38bc193 --- /dev/null +++ b/src/main/java/seng202/group9/Core/RoutePath.java @@ -0,0 +1,35 @@ +package seng202.group9.Core; + +import java.util.ArrayList; +import java.util.Collections; + +/** + * Created by brad on 9/09/16. + * Edited by fwy13 + */ +public class RoutePath { + private ArrayList route = new ArrayList(); + + public RoutePath(Position ...points) { + Collections.addAll(route, points); + } + + public RoutePath(){ + + } + + public void addPosition(Position position){ + route.add(position); + } + + public String toJSONArray() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("["); + for (Position pos : route){ + stringBuilder.append( + String.format("{lat: %f, lng: %f}, ", pos.lat, pos.lng)); + } + stringBuilder.append("]"); + return stringBuilder.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/seng202/group9/GUI/FlightSummaryController.java b/src/main/java/seng202/group9/GUI/FlightSummaryController.java index 5fd7d93..74815a7 100644 --- a/src/main/java/seng202/group9/GUI/FlightSummaryController.java +++ b/src/main/java/seng202/group9/GUI/FlightSummaryController.java @@ -6,10 +6,12 @@ import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.ListView; +import javafx.scene.web.WebView; import seng202.group9.Controller.App; import seng202.group9.Controller.Dataset; import seng202.group9.Controller.SceneCode; import seng202.group9.Core.FlightPath; +import seng202.group9.Map.Map; import java.net.URL; import java.util.ArrayList; @@ -25,7 +27,9 @@ public class FlightSummaryController extends Controller { @FXML private Button flightRawData; - + private Map map; + @FXML + private WebView mapView; @FXML ListView flightPathListView; final ObservableList flightList = FXCollections.observableArrayList(); @@ -64,6 +68,7 @@ public class FlightSummaryController extends Controller { } catch (Exception e) { e.printStackTrace(); } + map = new Map(mapView); } } diff --git a/src/main/java/seng202/group9/Map/Map.java b/src/main/java/seng202/group9/Map/Map.java new file mode 100644 index 0000000..16fb220 --- /dev/null +++ b/src/main/java/seng202/group9/Map/Map.java @@ -0,0 +1,39 @@ +package seng202.group9.Map; + +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.concurrent.Worker; +import javafx.scene.web.WebEngine; +import javafx.scene.web.WebView; +import seng202.group9.Core.Position; +import seng202.group9.Core.RoutePath; + +/** + * Created by fwy13 on 17/09/16. + */ +public class Map { + + private WebEngine webEngine; + private WebView webView; + + public Map(WebView webView){ + this.webView = webView; + webEngine = webView.getEngine(); + initMap(); + } + + public void initMap() { + webEngine.load(getClass().getClassLoader().getResource("map.html").toExternalForm()); + } + + public void displayRoute(final RoutePath newRoute) { + webEngine.getLoadWorker().stateProperty().addListener( + new ChangeListener(){ + public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState){ + String scriptToExecute = "displayRoute(" + newRoute.toJSONArray() + ");"; + webEngine.executeScript(scriptToExecute); + } + }); + } + +} diff --git a/src/main/resources/flight_data_summary.fxml b/src/main/resources/flight_data_summary.fxml index b8c936c..24f8007 100644 --- a/src/main/resources/flight_data_summary.fxml +++ b/src/main/resources/flight_data_summary.fxml @@ -64,8 +64,7 @@ - - + diff --git a/src/main/resources/map.html b/src/main/resources/map.html new file mode 100644 index 0000000..a79ccfa --- /dev/null +++ b/src/main/resources/map.html @@ -0,0 +1,88 @@ + + + + Google Map Demo + + + + + +
+ + + + \ No newline at end of file