GoogleMaps仅显示使用PHP和JavaScript的MySQL数据库中的最后一个标记
当我试图从数据库信息中显示多个标记时,地图仅显示其信息窗口返回的最后一个标记 我读了另一篇关于clousure的帖子,但我无法解决我的问题 这是原始代码:GoogleMaps仅显示使用PHP和JavaScript的MySQL数据库中的最后一个标记,javascript,php,google-maps,google-maps-api-3,closures,Javascript,Php,Google Maps,Google Maps Api 3,Closures,当我试图从数据库信息中显示多个标记时,地图仅显示其信息窗口返回的最后一个标记 我读了另一篇关于clousure的帖子,但我无法解决我的问题 这是原始代码: <body> <?php include("conexion.php"); $tipo = $_POST['type']; ?> <div class="container"> <div class="row"> &
<body>
<?php
include("conexion.php");
$tipo = $_POST['type'];
?>
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Map</h1>
<div id="map" style="width:100%;height:360px;"></div><br><br>
<?php
$con = mysqli_connect($host, $user, $pass, $db_name) or die("Error");
$query = "select * from table where type_name='".$type."'";
$result = mysqli_query($con,$query);
$i=1;
while ($data = mysqli_fetch_assoc($result)) {
?>
<script type="text/javascript">
var cat = new google.maps.LatLng(41.652393,1.691895);
var mapOptions = {
center: cat,
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map'), mapOptions);
var marker<?php echo $i;?> = new google.maps.Marker({
position: new google.maps.LatLng(<?php echo $data['lat']; ?>, <?php echo $data['lng']; ?>),
map: map,
title: <?php echo "'".$data['name']."'"; ?>
});
var infowindow<?php echo $i;?> = new google.maps.InfoWindow({
content: "<h1><?php echo "".$data['name'].""; ?></h1><p><b>Addres</b><br> <?php echo "".$data['addres'].""; ?></p><p><b>Description</b><br><?php echo "".$data['description'].""; ?></p>"
});
google.maps.event.addListener(marker<?php echo $i;?>, 'click', function() {
infowindow<?php echo $i;?>.open(map,marker<?php echo $i;?>);
});
</script>
<?php
$i++;
}
mysqli_close($con);
?>
</div>
</div>
</div>
</body>
地图
, ),
地图:地图,
标题:。打开(地图、标记);
});
nghngh只需将所有标记放在一个数组上,也可以在js内部执行此操作,为每次交互创建map var,或者使用ajax在js上创建元素,这将大大提高性能 再看看这个