diff --git a/Ohj2HT/src/Luokat/kartanPiirtaja.java b/Ohj2HT/src/Luokat/kartanPiirtaja.java
new file mode 100644
index 0000000000000000000000000000000000000000..dcb3abc6ae12f021cfd4f960ac204e24f9cf4ac0
--- /dev/null
+++ b/Ohj2HT/src/Luokat/kartanPiirtaja.java
@@ -0,0 +1,106 @@
+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);
+        }
+    }
+}
diff --git a/Ohj2HT/src/fxHeatMapTesti/HeatMapTestiGUIController.java b/Ohj2HT/src/fxHeatMapTesti/HeatMapTestiGUIController.java
index 54fec6002c53735f4516b8ef1f4cbbdc0b803597..c1988732555fc2b284833075e788ac682b7d83c5 100644
--- a/Ohj2HT/src/fxHeatMapTesti/HeatMapTestiGUIController.java
+++ b/Ohj2HT/src/fxHeatMapTesti/HeatMapTestiGUIController.java
@@ -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());
         }
diff --git a/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java b/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java
index dfa68e27180cede6139d3e564dfa55a22616a532..8851b2e3cfbe4c2bdc9ec94f830b745e7ebf3562 100644
--- a/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java
+++ b/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java
@@ -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();
+
     }
 
 
diff --git a/Ohj2HT/src/fxKalenteri/KalenteriGUIView.fxml b/Ohj2HT/src/fxKalenteri/KalenteriGUIView.fxml
index cdd9107d523229eeddb3908b133f8304f134beb1..5365b4345c1809cb1e152c4530f81b80633876fc 100644
--- a/Ohj2HT/src/fxKalenteri/KalenteriGUIView.fxml
+++ b/Ohj2HT/src/fxKalenteri/KalenteriGUIView.fxml
@@ -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>
diff --git a/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java b/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java
index d80953c5d01b2aeafdb49630a4aeb78b1274ab2b..c3f73bb547a7f639aa2026d1af723450ecd1b5d9 100644
--- a/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java
+++ b/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java
@@ -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);
 
 	 }
 	
diff --git a/Ohj2HT/src/media/UusiKarttakopio.png b/Ohj2HT/src/media/UusiKarttakopio.png
index 86a004114e0f22a2c72b11c182b87a2e07067475..33fd61576c2a472dbf418bf5670a6dfafa4a4ffa 100644
Binary files a/Ohj2HT/src/media/UusiKarttakopio.png and b/Ohj2HT/src/media/UusiKarttakopio.png differ