GoogleMaps仅显示使用PHP和JavaScript的MySQL数据库中的最后一个标记

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"> &

当我试图从数据库信息中显示多个标记时,地图仅显示其信息窗口返回的最后一个标记

我读了另一篇关于clousure的帖子,但我无法解决我的问题

这是原始代码:

  <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上创建元素,这将大大提高性能

再看看这个