#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>