Данные geo json загружены в листовую карту и страницу php / html - PullRequest
0 голосов
/ 07 марта 2020

В настоящее время у меня есть страница html, разделенная на 2 столбца - правая сторона представляет собой карту Leaflet с маркерами, а левая часть описывает немного больше о маркерах. Я загружаю карту Leaflet, используя данные geo Json справа и карта и маркеры отображаются нормально. Теперь я хочу взять те же географические данные Json и использовать их для заполнения левой части страницы php. Таким образом, при добавлении сайтов необходимо обновить только один файл.

Вот пример моих данных geo Json:

  var historicalMarkers = {
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [-77.423603, 38.865608 ]
            },
            "properties": {
                "id": 1,
               "siteName": "House14"
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [ -77.416770, 38.923650]
            },
            "properties": {
                "id": 2,
               "siteName": "Meeting House"
            }
        }..........

На главной странице php, Я просто включаю файл geo Json (мест. js) и код geoJson / Leaflet (map-geo Json. js).

На этой главной странице php я хотелось бы описания каждого из маркеров. В map-geo Json. js я передаю данные обратно php через ajax следующим образом:

    // get stuff ready for php
    var historicalData = [];
    for (var i = 0; i < historicalMarkers.features.length; i++) {
        var currentFeature = historicalMarkers.features[i];
        var id = currentFeature.properties.id;
        var siteName = currentFeature.properties.siteName;

        console.log(id, siteName);
        historicalData.push({ id: id, siteName : siteName });
    }
    var historicalJson = JSON.stringify(historicalData);

    $.ajax({
        url: location.pathname,   //current page
        type: 'POST',
        data: historicalJson
    });

Данные отображаются на консоли и являются правильными. На моей странице php я хочу получить данные и поместить их в несколько различных разделов на странице:

 $phpArray = json_decode($_POST['historicalJson']);
 var_dump ($phpArray);                // NULL is displayed 
  foreach ( $phpArray as $value )
  {  ?>
     <div class="id">
        <h4><a href="#"><?php echo $value['id']; ?></a></h4>
     </div>
     <div class="siteName">
        <h4><a href="#"><?php echo $value['siteName']; ?></a></h4>
     </div>

......
  <?php } ?>

Но ничего не отображается. Я также попытался повторить

    echo $value[0]->id;
    echo $value['id']

Почему-то я неправильно собираю данные на странице php и отображаю их в div. Кто-нибудь может дать предложение? Я уверен, что это что-то маленькое, что мне не хватает, но я попробовал много, много способов получить данные в php. Спасибо

1 Ответ

0 голосов
/ 07 марта 2020

json_decode() возвращает объект (stdClass) по умолчанию. Если вы хотите использовать данные в виде массива, вам нужно установить второй параметр функции на true:

 $phpArray = json_decode($_POST['historicalJson'], true);

См. документация json_decode

...