Skip to content
Snippets Groups Projects
Commit 508b94a9 authored by Lahtinen Konsta Aleksi's avatar Lahtinen Konsta Aleksi
Browse files

Heatmap todellinen versio valmis

parent 8111efbf
No related branches found
No related tags found
No related merge requests found
package Luokat;
import fi.jyu.mit.fxgui.Dialogs;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
public class kartanPiirtaja {
public static void haeKoordinaatti(String answer) {
try{
if (answer.equals("ei")) {
return;
}
System.out.println(answer);
String paikka = answer.toLowerCase().replace(' ', '+').replace('ä','a').replace('ö','o');
System.out.println(paikka);
//Valmistellaan paikka poistamalla skandit ja laittamalla se pieniin kirjaimiin
String urlJono = "https://nominatim.openstreetmap.org/search?q=" +paikka +"+Suomi" +"&format=json";
//Lisätään vielä suomi jokaiseen api kutsuun, jotta vältytään tilanteelta, missä saadaan kaksi eri maasta olevaa paikkaa
URI uri = new URI(urlJono);
URL url = uri.toURL();
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
//Luetaan palautettu viesti
System.out.println(content);
String[] split = content.toString().split(",");
String[] coords = new String[2];
for(String s : split) {
if(s.contains("lat")){
System.out.println(s);
coords[0] = s;
}
if(s.contains("lon")){
System.out.println(s);
coords[1] = s;
}
//haetaan koordinaatit viestistä "," merkki jakoi jonon parhaiten
}
String[] lat = coords[0].split(":");
String[] lon = coords[1].split(":");
//Koordinaatissa oli vielä lon:62 joten täytyy saada vain numero
double lng = Double.parseDouble(lon[1].replace("\"",""));
double la = Double.parseDouble(lat[1].replace("\"",""));
double tunlat = 61;
double tunlon = 25.7;
double liikex = 32.15;
double liikey = 71.45;
//Yllä tunnetut koordinaatit sekä yhden lat/lon yksikön liike kartalla
int x = (int) (300 + (lng - tunlon) * liikex);
int y = (int) (670 - (la - tunlat) * liikey);
//300 ja 670 olivat tunnetun koordinaattien pikseli kartalla
if(piirraKuvaan(x,y)){
Dialogs.showMessageDialog("Kuva päivitettiin käynnistä sovellus uudestaan, jotta näet päivitykset");
}
}
catch(Exception e){
e.printStackTrace();
}
}
private static boolean piirraKuvaan(int x, int y) {
try{
File file = new File(System.getProperty("user.dir") +"/src/media/UusiKarttakopio.png");
BufferedImage kartta = ImageIO.read(file);
Graphics2D sivellin = kartta.createGraphics();
sivellin.setColor(Color.BLACK);
sivellin.fillOval(x - 10, y - 10, 20, 20);
sivellin.dispose();
//Piirretään kuvaan koordinaatteihin piste, -10, jotta säde saadaan oikein
File uusi = new File(System.getProperty("user.dir")+"/src/media/UusiKarttakopio.png");
if(uusi.exists()){
System.out.println("tiedosto luotu");
ImageIO.write(kartta, "png", uusi);
return true;
}
//tallennetaan uusi versio kuvasta vanhan päälle ja asetetaan kuva takaisin (toisaalta javafx ei taida lukea kuin kerran kuvan joten ei ehkä tarvitsisi tehdä)
return false;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
......@@ -54,6 +54,7 @@ public class HeatMapTestiGUIController implements Initializable {
try {
Files.copy(kopio.toPath(), vanha.toPath(), StandardCopyOption.REPLACE_EXISTING);
Dialogs.showMessageDialog("Kartan nollaus onnistui!");
} catch (IOException e) {
Dialogs.showMessageDialog("Virhe nollauksessa: " + e.getMessage());
}
......
......@@ -13,14 +13,19 @@ import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.List;
import java.util.ResourceBundle;
import Luokat.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
/**
* @author konst
......@@ -29,7 +34,7 @@ import Luokat.*;
public class KalenteriGUIController implements Initializable {
private Kalenteri kalenteri;
@FXML private ImageView Kartta;
@FXML private ListChooser<String> Saaliisi;
@FXML private Label reissuLkm;
@FXML private ListChooser<Reissu> reissutLista;
......@@ -101,18 +106,32 @@ public class KalenteriGUIController implements Initializable {
* Nollaa kartan
*/
private void nollaaKartta() {
Dialogs.showQuestionDialog("Nollataanko", "Nollataanko kartta?", "Kyllä", "Ei");
boolean vastaus = Dialogs.showQuestionDialog("Nollataanko", "Nollataanko kartta?", "Kyllä", "Ei");
if (vastaus) {
File kopio = new File(System.getProperty("user.dir")+"/src/media/Kartta_backup.png");
File vanha = new File(System.getProperty("user.dir")+"/src/media/UusiKarttakopio.png");
try {
Files.copy(kopio.toPath(), vanha.toPath(), StandardCopyOption.REPLACE_EXISTING);
Platform.runLater(() -> Kartta.setImage(new Image("/media/UusiKarttakopio.png")));
Dialogs.showMessageDialog("Kartan nollaus onnistui!");
} catch (IOException e) {
Dialogs.showMessageDialog("Virhe nollauksessa: " + e.getMessage());
}
}
}
/**
* avaa uuden ikkunan "LisaaReissu", lisää reissun käyttöliittymään ja kasvattaa laskureita
*/
private void LisaaReissu(){
Kartta.setImage(null);
ModalController.showModal(KalenteriMain.class.getResource("/fxLisaaReissu/LisaaReissuGUIView.fxml"),
"Lisää reissu", null,kalenteri);
kalenteri.paivitaTulkit();
Platform.runLater(() -> Kartta.setImage(new Image("/media/UusiKarttakopio.png")));
kirjoitaReissut();
tekstienPaivitys();
}
......
......@@ -82,9 +82,9 @@
</BorderPane>
</left>
<center>
<ImageView fitHeight="409.0" fitWidth="330.0" pickOnBounds="true" preserveRatio="true" BorderPane.alignment="TOP_LEFT">
<ImageView fx:id="Kartta" fitHeight="409.0" fitWidth="330.0" pickOnBounds="true" preserveRatio="true" BorderPane.alignment="TOP_LEFT">
<image>
<Image url="@../media/UusiKartta.png" />
<Image url="@../media/UusiKarttakopio.png" />
</image>
</ImageView>
</center>
......
......@@ -102,7 +102,8 @@ public class LisaaReissuGUIController implements Initializable, ModalControllerI
String pvm = Pvm.getText();
Reissu a = new Reissu(Reissu.sToDate(pvm), sijainti.getText(),keli.getText(),saaliit, false);
kale.lisaaReissu(a, saaliit);
ModalController.closeStage(pane);
kartanPiirtaja.haeKoordinaatti(sijainti.getText());
ModalController.closeStage(pane);
}
......
Ohj2HT/src/media/UusiKarttakopio.png

145 KiB | W: | H:

Ohj2HT/src/media/UusiKarttakopio.png

192 KiB | W: | H:

Ohj2HT/src/media/UusiKarttakopio.png
Ohj2HT/src/media/UusiKarttakopio.png
Ohj2HT/src/media/UusiKarttakopio.png
Ohj2HT/src/media/UusiKarttakopio.png
  • 2-up
  • Swipe
  • Onion skin
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment