google 地图标记 php

google map markers php

我可以正常显示我的 mp,但是当我去添加标记时它不再加载地图...即当我将后者 php 代码添加到我的初始化函数时它不会'不工作!有什么想法吗??!

<script type="text/javascript">

    var map = null;

    function addMarker(lat, lng){

        var point = new google.maps.LatLng(lat, lng);
        var marker = new google.maps.Marker({
            position: point,
            map: map
        });

    }
    function initialize() {
        var mapOptions = {
            center: {lat: 54.872128, lng: -6.284874},
            zoom: 15
        };
        var map = new google.maps.Map(document.getElementById('map-canvas'),
                mapOptions);

        <?php        
        $query = mysqli_query("select * from tester") or die(mysqli_error());
        while($row = mysqli_fetch_array($query)){ 
                $lat = $row['lat'];
                $lng = $row['lng'];
                echo ("addMarker($lat, $lng);");
                ?>

  }


    google.maps.event.addDomListener(window, 'load', initialize);


</script>

<div id="map-canvas" style="height:600px; width:600px;
     margin-top:100px; margin-bottom: 100px;
     ">

</div>

您对 map 的范围有疑问,在您的初始化函数中,您在该范围内重新声明它而不是填充先前的映射变量,如下所示从您的函数中删除 var :

map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); //Note i've removed the "var" keyword from this line.

稍微解释一下:

var map = null; -> 在全局范围内声明。

var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); -> 在 initialize 函数范围内声明。

var marker = new google.maps.Marker({
    position: point,
    map: map // -> NULL because it will look for map in the parent scope.
});

我发现了问题,您缺少 while 语句的右大括号:

<?php        
    $query = mysqli_query("select * from tester") or die(mysqli_error());
    while ($row = mysqli_fetch_array($query)) {
        $lat = $row['lat'];
        $lng = $row['lng'];
        echo ("addMarker($lat, $lng);");
    } //Missing!!!
?>