Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] Mapa + radar i czas UTC
Forum PHP.pl > Forum > Przedszkole
brzanek
Witam mam mapę związaną ze skryptem leafletjs.
Pobieram do niej warstwę z radaru opadów z adresu np:
  1. http://radarmapaopadow.pl/data/YYYYMMDDHHMM0000.png

Obraz z radaru aktualizuje się do 10 minut ale nie o pełnych minutach tylko w czasie UTC i o np:
czas UTC 10:12 normalny 12:12
czas UTC 10:22 normalny 12:22
czas UTC 10:32 normalny 12:32
czas UTC 10:42 normalny 12:42
i tak dalej.
Kiedy o stałych godzinach wszystko jest ok to przy zmianie godziny błędnie pobiera mi dane.
Mam taki kod.
  1. <?
  2. $timestamp = time()+date("Z");
  3. echo gmdate("YmdH",$timestamp);
  4. $obecnewarunkii = gmdate('YmdH');
  5. $minutyarray=array(
  6. '01' => '40',
  7. '02' => '50',
  8. '03' => '50',
  9. '04' => '50',
  10. '05' => '50',
  11. '06' => '50',
  12. '07' => '50',
  13. '08' => '50',
  14. '09' => '50',
  15. '10' => '50',
  16. '11' => '50',
  17. '12' => '00',
  18. '13' => '00',
  19. '14' => '00',
  20. '15' => '00',
  21. '16' => '00',
  22. '17' => '00',
  23. '18' => '00',
  24. '19' => '00',
  25. '20' => '00',
  26. '21' => '00',
  27. '22' => '10',
  28. '23' => '10',
  29. '24' => '10',
  30. '25' => '10',
  31. '26' => '10',
  32. '27' => '10',
  33. '28' => '10',
  34. '29' => '10',
  35. '30' => '10',
  36. '31' => '10',
  37. '32' => '20',
  38. '33' => '20',
  39. '34' => '20',
  40. '35' => '20',
  41. '36' => '20',
  42. '37' => '20',
  43. '38' => '20',
  44. '39' => '20',
  45. '40' => '20',
  46. '41' => '20',
  47. '42' => '30',
  48. '43' => '30',
  49. '44' => '30',
  50. '45' => '30',
  51. '46' => '30',
  52. '47' => '30',
  53. '48' => '30',
  54. '49' => '30',
  55. '50' => '30',
  56. '51' => '30',
  57. '52' => '40',
  58. '53' => '40',
  59. '54' => '40',
  60. '55' => '40',
  61. '56' => '40',
  62. '57' => '40',
  63. '58' => '40',
  64. '59' => '40',
  65. '00' => '40'
  66. );
  67. $minutypoprzeliczeniu = $minutyarray[date("i")];
  68. $minuty = date("i");
  69. $zaokragloneminutyy = round($minuty, -10);
  70. $zaokragloneminuty = round($minuty, -1);
  71. $dataczas = date('YmdH', strtotime('-2 hour'));
  72. $h=date("H");
  73. $m=date("i")-12;
  74. while($m%10!=0){
  75. if($m==0)
  76. $h--;
  77. $m--;
  78. }
  79. $dataczasnowy = "$obecnewarunkii$minutypoprzeliczeniu";
  80. $dataczasnowyy = "$dataczas$zaokragloneminutyy";
  81. echo 'dobrze: '.$dataczasnowy.'';
  82. ?>
  83.  
  84. <html>
  85. <head>
  86. <meta charset="utf-8" />
  87. <title>Radar opadów dla woj. zachodniopomorskiego</title>
  88. <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
  89.  
  90. <!-- Load Leaflet from CDN -->
  91. <link href="https://meteomap.pl/css/jquery-ui.min.css" rel="stylesheet">
  92. <script src="https://meteomap.pl/js/jquery-ui.min.js"></script>
  93. <link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css"
  94. integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9
  95. wQ=="
  96. crossorigin=""/>
  97. <script src="http://leaflet-extras.github.io/leaflet-providers/leaflet-providers.js"></script>
  98. <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"
  99. integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew=="
  100. crossorigin=""></script>
  101.  
  102. <script src="https://unpkg.com/esri-leaflet@2.4.0/dist/esri-leaflet.js"
  103. integrity="sha512-kq0i5Xvdq0ii3v+eRLDpa++uaYPlTuFaOYrfQ0Zdjmms/laOwIvLMAxh7cj1eTqqGG47ssAcTY4hjkWydGt6Eg=="
  104. crossorigin=""></script>
  105. <script src="https://rawgithub.com/mylen/leaflet.TileLayer.WMTS/master/leaflet-tilelayer-wmts.js"></script>
  106.  
  107.  
  108. <style>
  109. html,
  110. body,
  111. #map {
  112. height: 700px;
  113. width: 700px;
  114. margin: 0;
  115. padding: 0;
  116. }
  117. </style>
  118. </head>
  119. <body>
  120.  
  121. <div id="map"></div>
  122. <div class="map-ustawienia map-ustawienia-nawigacja-os-czasu alert alert-info" id="nawigacja_os_czasu" style="display:none;">
  123. <div id="suwak_os_czasu">
  124. <div id="suwak_os_czasu_handlerAktualny" class="ui-slider-handle"></div>
  125. </div>
  126. </div>
  127. <script>
  128. var map = L.map('map').setView([53.641327, 15.701723], 8);
  129.  
  130. var withBoundary = function(providerName) {
  131. return L.TileLayer.BoundaryCanvas.createFromLayer(
  132. L.tileLayer.provider(providerName),
  133. {boundary: geom, trackAttribution: true}
  134. )
  135. }
  136. L.esri.basemapLayer('Streets').addTo(map);
  137.  
  138. L.marker([48.1450, 11.8094]).addTo(map);
  139. L.marker([56.1950, 25.0794]).addTo(map);
  140.  
  141. var nazwa = "<?php echo $dataczasnowy; ?>";
  142. var imageUrl = 'http://linkdoradaru'+<?php echo $dataczasnowy; ?>+'0000.png',
  143. imageBounds = [[48.1450, 11.8094], [56.1950, 25.0794]];
  144.  
  145. L.imageOverlay(imageUrl, imageBounds, {opacity: 0.8}).addTo(map);
  146.  
  147. </script>
  148.  
  149. </body>
  150. </html>

O godzinie 20:00 powinien pobrać obraz z radaru z godziny 17:50 a pobiera z 18:00 którego jeszcze nie ma. Te zostanie utworzony dopiero o 20:12.
nospor
Jakbys mogl jeszcze raz napisac regule godzin... bo teraz to widze jeden wielki balagan. Raz cos piszesz o 12, 22 itd a potem o 10, 20... itd. Sie zdecyduj wink.gif
brzanek
To może troszkę inaczej
Zamieniłem obecną datę na czas unixowy
  1. $datagodzina = (strtotime("-7920 seconds"));
  2. echo date("YmdHi", $datagodzina);

Odjąłem od tej daty 7920 sekund aby uzyskać czas UTC (-2h od czasu polskiego oraz 12 minut bo z takim opóźnieniem pojawiają się aktualne dane radarowe) i uzyskuję dobrą datę ale muszę wywalić z niej drugi człon minut aby uzyskać nie hh:32 tylko hh:3
Jak to zrobić?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.