#php #javascript
#php #javascript
Вопрос:
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:"Hello World!"
});
<?php
$fd = fopen ("landmarks.csv", "r");
echo "var latlngarr=new Array();";
$i=0;
echo "var markerarr=new Array();";
while (!feof ($fd)) {
$buffer = fgetcsv($fd, 4096);
echo "var latlngarr[$i] = new google.maps.LatLng($buffer[2],$buffer[3]);";
echo "var markerarr[$i] = new google.maps.Marker({
position: latlngarr[$i],
map: map,
title:$buffer[1]";
});
$i ;
}
fclose ($fd);
?>
Я хочу создать несколько маркеров на картах Google .. первая запись работает…но другие записи из csv-файла не работают? Есть ли что-то неправильное в смешанном коде php и Javscript?
Комментарии:
1. Не уверен, что это может вам помочь, но SitePoint подготовил руководство о том, как заставить Google Maps извлекать местоположения для маркеров из XML-файла с помощью AJAX — blogs.sitepoint.com/google-maps-api-jquery . Если вы планируете просматривать большое количество маркеров или использовать базу данных для хранения их сведений (в этом случае другой PHP-скрипт мог бы сгенерировать необходимый XML для динамического доступа к этим данным), возможно, стоит взглянуть.
Ответ №1:
Добавьте кавычки вокруг строк и исправьте отсутствующие }
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:"Hello World!"
});
<?php
$fd = fopen ("landmarks.csv", "r");
echo "var latlngarr=new Array();";
$i=0;
echo "var markerarr=new Array();";
while (!feof ($fd)) {
$buffer = fgetcsv($fd, 4096);
?>
latlngarr[<?= $i ?>] = new google.maps.LatLng(<?= $buffer[2] ?>, <?= $buffer[3] ?>);
markerarr[<?= $i ?>] = new google.maps.Marker({
position: latlngarr[<?= $i ?>],
map: map,
title: '<?= $buffer[1] ?>'
});
<?php
}
fclose ($fd);
?>
Ответ №2:
Я предполагаю, что, возможно, данные, поступающие из файла CSV, неправильно заключены в кавычки, особенно title
атрибут. При динамической сборке Javascript из PHP вы всегда должны использовать json_encode():
$b2 = json_encode($buffer[2]);
$b3 = json_encode($buffer[3]);
$title = json_encode($buffer[1]);
echo "var latlngarr[$i] = new google.maps.LatLng($b2,$b3);";
echo "var markerarr[$i] = new google.maps.Marker({
position: latlngarr[$i],
map: map,
title: $title";
});
использование json_encode гарантирует, что все, что находится в этих переменных PHP, будет переведено в синтаксически корректный Javascript.
Комментарии:
1. Я пробовал это, но, к сожалению, это, похоже, не проблема.
2. Проверьте вашу консоль javascript на наличие других ошибок. это shift-ctrl-J в Firefox.