Как применить фильтр диапазона дат для отображения маркеров на картах листовки? - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь просмотреть карту 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 или применить фильтр (для событий, показанных на карте) другим способом. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...