谷歌地图标记infowindow

时间:2011-05-08 15:07:26

标签: javascript php google-maps google-maps-markers

<?php
        //connect to your database ** EDIT REQUIRED HERE **
        mysql_connect("localhost","root","root"); //(host, username, password)

        //specify database ** EDIT REQUIRED HERE **
        mysql_select_db("Airport") or die("Unable to select database");
        //select which database we're using
        $query="select * from LondonHeathrowAirportArrivals ORDER BY id DESC";  
        // query string stored in a variable
        $rt=mysql_query($query);
        // query executed 
        echo mysql_error(); 

        while($nt=mysql_fetch_array($rt)){
            $counter=$counter+1;
            $angle=round($nt['angle'], -1);
        ?>
        <script type="text/javascript">
        function initialize() {

          var myLatlng = new google.maps.LatLng(51.48, -0.52);
          var myOptions = {
            zoom: 8,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
          }
          map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
          var flightPlanCoordinates = [
            path1, path2, path3, path4, path5, path6
          ];

          var flightPath = new google.maps.Polyline({
            path: flightPlanCoordinates,
            strokeColor: "#FF0000",
            strokeOpacity: 1.0,
            strokeWeight: 2
          });

          flightPath.setMap(map);
           for (i=1;i<=1000;i++){
              var marker<?= $nt['Flightnumber'] ?> = new google.maps.Marker({
                  position:eval('myLatlng'+i),
                  map: map, 
                  title:eval('title'+i),
                  icon: eval('image'+i)
              }); 
              google.maps.event.addListener(marker<?= $nt['Flightnumber'] ?>, 'click', function() {
                 alert('<?= $nt[Flightnumber] ?>');
                });

          }
        }
                var myLatlng<?php echo $counter ?>= new google.maps.LatLng(<?php echo $nt['Length'] ?>,<?php echo $nt['Breadth'] ?>);
                var image<?php echo $counter ?> = new google.maps.MarkerImage('img/plane<?= $angle ?>.png', new google.maps.Size(35, 35), new google.maps.Point(0,0), new google.maps.Point(0, 12));
                var title<?php echo $counter ?> = "<?= $nt[Flightnumber] ?>";
                var path1= new google.maps.LatLng(51.51,-0.60);
                var path2= new google.maps.LatLng(51.50,-0.58);
                var path3= new google.maps.LatLng(51.49,-0.57);
                var path4= new google.maps.LatLng(51.48,-0.55);
                var path5= new google.maps.LatLng(51.48,-0.53);
                var path6= new google.maps.LatLng(51.48,-0.52);
            </script>
            <?php               
            }
        ?>
</head>

有人可以向我解释为什么当我点击不同的标记我仍然得到一个警报,其中包含最后一个标记的内容???如果有人能够更改上面的代码以使每个警报都独一无二,我将非常感激...我已经坚持了几个小时并且无法找到解决方案。

1 个答案:

答案 0 :(得分:0)

您所拥有的是一个闭包问题,This post对问题和解决方案有一个简短的定义

相关问题