Prikazi cijelu temu 29.05.2023 15:33
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Lokacija:Tuzla


Predmet:Ucitavanje slike na mapu
PreuzmiIzvorni kôd (PHP):
  1. <?php
  2. // Putanja do vase JPEG slike
  3. $slika = 'slika.jpg';
  4.  
  5. // Provjera postojanja EXIF podataka u slici
  6.         if (exif_imagetype($slika) === IMAGETYPE_JPEG && function_exists('exif_read_data'))
  7.         {
  8.         // Citanje EXIF podataka iz slike
  9.         $exif = exif_read_data($slika);
  10.  
  11.         // Provjera postojanja geografskih koordinata (lokacije) u EXIF podacima
  12.         if (isset($exif['GPSLatitude']) && isset($exif['GPSLongitude'])) {
  13.         // Dekodiranje geografskih koordinata
  14.         $latitude = $exif['GPSLatitude'];
  15.         $longitude = $exif['GPSLongitude'];
  16.  
  17.         // Dekodiranje smjera
  18.         $latitudeRef = $exif['GPSLatitudeRef'];
  19.         $longitudeRef = $exif['GPSLongitudeRef'];
  20.  
  21.         // Pretvaranje geografskih koordinata u decimalni format
  22.         $latitudeDecimal = convertToDecimalDegrees($latitude, $latitudeRef);
  23.         $longitudeDecimal = convertToDecimalDegrees($longitude, $longitudeRef);
  24.  
  25.         // Ispis geografskih koordinata
  26.         //echo "Lokacija: Latitude: $latitudeDecimal, Longitude: $longitudeDecimal";
  27.         }
  28.         else
  29.         {
  30.         echo "Nema dostupnih geografskih koordinata u EXIF podacima slike.";
  31.         }
  32.         } else
  33.         {
  34.         echo "Nevazeca slika ili nedostaje podrska za citanje EXIF podataka.";
  35.         }
  36.  
  37. // Funkcija za pretvaranje geografskih koordinata iz stupnjeva, minuta i sekundi u decimalni format
  38.         function convertToDecimalDegrees($coord, $hemisphere)
  39.         {
  40.                 $degrees = count($coord) > 0 ? $coord[0] : 0;
  41.                 $minutes = count($coord) > 1 ? $coord[1] : 0;
  42.                 $seconds = count($coord) > 2 ? $coord[2] : 0;
  43.                 $degrees= eval("return $degrees;");
  44.                 $minutes = eval("return $minutes;");
  45.                 $seconds = eval("return $seconds;");
  46.  
  47.                 $sign = ($hemisphere == 'W' || $hemisphere == 'S') ? -1 : 1;
  48.                 $decimal = $sign * ($degrees + ($minutes / 60) + ($seconds / 3600));
  49. $string = "2 + 3 * 5"; // String koji sadrzi matemati
  50. ku operaciju
  51.  
  52. $result = eval("return $string;"); // Izvrsavanje matematicke operacije
  53.  
  54. //echo $result; // Ispis rezultata
  55.  
  56.                 return $decimal;
  57.        
  58.         }
  59.  
  60. ?>
  61. <!DOCTYPE html>
  62. <html>
  63. <head>
  64.     <title>Prikaz mape</title>
  65.     <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
  66.     <style>
  67.         #map {
  68.             height: 600px;
  69.             width: 1300px;
  70.         }
  71.     </style>
  72. </head>
  73. <body>
  74.         <form>
  75.         <input type="text"  id="la" value="<?= $latitudeDecimal; ?>"/>
  76.         <input type="text"  id="lo" value="<?= $longitudeDecimal;?>"/>
  77.     <div id="map"></div>
  78.     <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
  79.     </form>
  80. </body>
  81. </html>
  82.  
  83.    
  84.     <script>
  85.  
  86.         // Kreiranje mape
  87.         var la=document.getElementById("la").value;
  88.         var lo=document.getElementById("lo").value;
  89.         var map = L.map('map').setView([la, lo], 10);
  90.  
  91.         // Dodavanje plocica mape
  92.         L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
  93.         {
  94.             attribution: '© <a href="https://openstreetmap.org">otvori</a> contributors'
  95.         }).addTo(map);
  96.  
  97.         // Definiranje ikone (slike) za marker
  98.         var myIcon = L.icon
  99.             (
  100.                 {
  101.                 iconUrl: 'slika.jpg',
  102.                 iconSize: [38, 38],
  103.                 iconAnchor: [19, 38],
  104.                 popupAnchor: [0, -38]
  105.                 }
  106.         );
  107.  
  108.         // Dodavanje vase slike na kartu
  109.         var imageMarker = L.marker([la, lo], { icon: myIcon }).addTo(map);
  110.         imageMarker.bindPopup('Moj marker s slikom').openPopup();
  111.  
  112.                 //provjerava koji je taster misa pritisnut i mijenja velicinu slike na osnovu toga
  113.                 imageMarker.on
  114.                 ('mousedown', function()
  115.                     {
  116.                     var mis=event.button;
  117.                         if(mis==0)
  118.                         {
  119.                                 var n=2;       
  120.                                 }
  121.                                 else if(mis==2)
  122.                                 {
  123.                                 var n=0.5;     
  124.                                 }
  125.                                 else
  126.                                 {
  127.                                 var n=1;               
  128.                                 }
  129.                                 var x=myIcon.options.iconSize[0]*n ;
  130.                                 var y=myIcon.options.iconSize[1]*n ;
  131.                                 iconSize = [x, y];
  132.                                 iconAnchor = [30, 60];
  133.                                 popupAnchor = [0, -60];
  134.                                 myIcon.options.iconSize = iconSize;
  135.                                 myIcon.options.iconAnchor = iconAnchor;
  136.                                 myIcon.options.popupAnchor = popupAnchor;
  137.                                 imageMarker.setIcon(myIcon);                           
  138.                                
  139.                                
  140.                     }  
  141.  
  142.                 )
  143.     </script>
  144.        

Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
Ovaj post je ureden 5 puta. Posljednja izmjena 29.05.2023 16:21 od strane zxz.