问题
我试图通过通过PHP检索标记,将它们循环到JavaScript数组中,然后将Arrys循环以添加标记。
db查询
require_once("func/connect.php");
$query = "SELECT * FROM site_locations;";
$stmt = $db->prepare($query);
$stmt->execute();
创建JS数组
创建<script type="text/javascript">
var lat = new Array();
var lon = new Array();
var site = new Array();
<?php
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$lat = json_encode($row['latitude']);
$long = json_encode($row['longitude']);
$site = json_encode($row['site_name']);
?>
lat.push(<?php echo ''';
echo $lat;
echo '''; ?>);
lon.push(<?php echo ''';
echo $lon;
echo '''; ?>);
site.push(<?php echo ''';
echo $site;
echo '''; ?>);
<?php
}
?>
</script>
最后添加循环的JS数组以添加标记
markers: [
for (i = 0; i < lat.length; i++) {
{
latLng: [lat[i], lon[i]],
name: site[i]
},
}
]
目前的存在,这是行不通的。php的一面有效。
也尝试了
markers: [
for (var i = 0; i < lat.length; i++) {
{
latLng: [lat(i), lon(i)],
name: site(i)
},
}
]
您可以在PHP侧进行工作:
<?php
$points = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$point = new stdClass();
$coords = array();
$coords[] = floatval($row['latitude']);
$coords[] = floatval($row['longitude']);
$point->latLng = $coords;
$point->name = $row['site_name'];
array_push($points, $point);
}
?>
<script>
var points = <?php echo json_encode($points); ?>;
</script>
然后使用JavaScript变量启动您的地图:
markers: points
您已经 json_encode()
值,因此JS中的单个引号正在打破它。使用:
site.push(<?php echo $site; ?>);