Как связать переменные JavaScript с сгенерированным PHP JSON?

#javascript #php #arrays #json

#javascript #php #массивы #json

Вопрос:

У меня есть две переменные js здесь для геолокации на карте Google:

 <script>
    map = new google.maps.Map(document.getElementById('map'), {
        center: {lat: "<?php echo $lat; ?>", lng: "<?php echo $lng; ?>"},
        zoom: "<?php echo $zoom; ?>"
    });
                
    var image = {
        url: "<?php echo $imgurl; ?>",
        scaledSize: new google.maps.Size("<?php echo $mapwidth; ?>","<?php echo $mapheight; ?>")
    };
</script>
  

И я хочу установить некоторые маркеры и информационные окна с объектом, сгенерированным из базы данных PHP / SQL.

Это оригинальная форма js:

 <script>
    var marker_config = [
        {
            position: {lat: 34.775974, lng: 120.329628},
            map: map,
            title: 'Place A',
            label: 'A',
            icon: image
        },{
            position: {lat: 35.547591, lng: 115.467302},
            map: map,
            title:'Place B',
            label: 'B',
            icon: image
        },{
            position: {lat: 34.734375, lng: 117.408866},
            map: map,
            title:'Place C',
            label: 'C',
            icon: image
        }
    ];
</script>
  

Для этого объекта требуются обе переменные js, указанные выше в key map и key icon.

Мой PHP-массив написан следующим образом:

 <?php 
    $markarr = [
        array(
            'position'=>array('lat'=>34.775974, 'lng'=>120.329628),
            'map'=>'map',
            'title'=>'Place A',
            'label'=>'A',
            'icon'=>'image'
        ),
        array(
            'position'=>array('lat'=>35.547591, 'lng'=>115.467302),
            'map'=>'map',
            'title'=>'Place B',
            'label'=>'B',
            'icon'=>'image'
        ),
        array(
            'position'=>array('lat'=>34.734375, 'lng'=>117.408866),
            'map'=>'map',
            'title'=>'Place C',
            'label'=>'C',
            'icon'=>'image'
        )
    ];
 ?>
  

И в блоке js:

 <script>
    var marker_config = JSON.parse(<?php echo json_encode($markarr); ?>);
</script>
  

Это просто не сработало бы. Я думаю, возможно, это проблема вызова переменных в виде строк. Итак, я попытался убрать кавычки из слов «карта» и «изображение». Это тоже не сработало. Есть ли какое-нибудь решение для решения этой проблемы?

Ответ №1:

 <script>
    var marker_config = <?php echo json_encode($markarr); ?>;
</script>