Я пытаюсь просмотреть карту Leaflet, показывающую события в определенных местах в указанные даты. На данный момент мне удалось настроить карту для отображения маркеров для всех событий, взятых из базы данных MySQL. Следующим шагом является применение фильтра времени.
Я уже применил временной фильтр к таблице (используя те же данные, что и карта). Итак, у меня есть три файла:
- event.php - отображает карту и таблицу, а также фильтр (с кнопкой «Применить»)
- applychanges.php - который запускается при нажатии кнопки. Он не содержит никакой информации о карте, но указанный диапазон дат передается в этот файл для воздействия на таблицу.
- getlocation.php - этот файл использует jquery для получения информации о местоположении из mysql и преобразует данные в формат json - для того, чтобы карта Leaflet могла его использовать.
Моя проблема в том, что когда я пытаюсь изменить файл getlocation.php для передачи информации о временном диапазоне, я полностью теряю маркеры.
Я пытался передать значение переменных через:
1.AJAX - путем передачи данных в url: getlocation.php
2. Включение файла, содержащего переменные временного диапазона, в getlocation.php
3. Передача переменных через сессию, например:
applychanges.php
session_start();
$_SESSION['beg'] = $_POST["range_beginning"];
$_SESSION['end'] = $_POST["range_end"];
```php
getlocation.php
```php
session_start();
и добавление следующего к моему jquery
WHERE cast(eventdate as date) BETWEEN '".$_SESSION['beg']."' AND '".$_SESSION['end']."'
event.php
код даты
$(document).ready(function(){
$.datepicker.setDefaults({
dateFormat: 'yy-mm-dd'
});
$(function(){
$("#range_beginning").datepicker();
$("#range_end").datepicker();
});
$('#applyFilter').click(function(){
var range_beginning = $('#range_beginning').val();
var range_end = $('#range_end').val();
if(range_beginning != '' && range_end != '')
{
$.ajax({
url: "applychanges.php",
method:"POST",
data:{range_beginning:range_beginning, range_end:range_end},
success:function(data)
{
$('#table').html(data);
}
});
}
else
{
alert("Incorrect input. Please Select Date");
}
});
});
leaflet - настройка маркеров ранее определенной карты переменных
function showCallLocation(map) {
var markerIcon = L.icon({
iconUrl: "./pics/marker.png",
iconSize: [25,25]
});
$.getJSON("getlocation.php", function(data) {
for (var i = 0; i < data.length; i++) {
var location = new L.LatLng(data[i].Latitude, data[i].Longitude);
var event_location = data[i].city + " (" + data[i].country + ")";
var marker = new L.Marker(location, {
icon: markerIcon,
title: event_location
});
marker.addTo(map);
}
});
}
</script>
getlocation.php
<?php
require "connect.php";
$sql="SELECT * FROM events; //gets location name as well as the map coordinates - longitude and latitude
if (!$rs) {
echo "An SQL error occured.\n";
exit;
}
$rows = array();
while($r = mysqli_fetch_assoc($rs)) {
$rows[] = $r;
}
print json_encode($rows);
?>
Поэтому я хотел бы найти способ передать переменные временного диапазона в jquery в getlocation.php или применить фильтр (для событий, показанных на карте) другим способом. Спасибо