【发布时间】:2017-06-24 08:42:36
【问题描述】:
我正在尝试使用 MySQL 数据库中的数据(lat 和 lng)在 Google 地图上显示多个标记。当我运行 foreach 循环以在地图上返回这些标记时,它只返回最后一行。可能是什么问题?
<?php
require_once "db/db_handle.php";
$select = "SELECT * FROM map";
$data = $db->query($select);
?>
<!DOCTYPE html>
<html>
<head>
<style>
#map {
height: 400px;
width: 100%;
}
</style>
</head>
<body>
<h3>My Google Maps Demo</h3>
<div id="map"></div>
<?php foreach ($data as $key) {
echo $key['lat'];
?>
<script>
function initMap() {
var uluru = {lat: <?php echo $key['lat']; ?>, lng: <?php echo $key['lng']; ?>};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: uluru
});
var marker = new google.maps.Marker({
position: uluru,
map: map
});
var contentString = '<?php echo $key['address']; ?>';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
var marker = new google.maps.Marker({
position: uluru,
map: map,
title: 'Uluru (Address)'
});
marker.addListener('click', function() {
infowindow.open(map, marker);
});
}
</script>
<?php } ?>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=myKey&callback=initMap">
</script>
</body>
</html>
【问题讨论】:
-
您将整个脚本包含在循环中,即每次执行循环时都会生成一个新的地图实例,将地图移到循环外,只在循环内标记
-
我该怎么做?
标签: javascript php mysql google-maps-api-3