php - 谷歌地图中的递归太多

标签 php jquery mysql google-maps

<script type='text/javascript'>
  jQuery(document).ready(function($){
        var geocoder;
        var map;
        var markersArray = [];
        var infos = [];

        geocoder = new google.maps.Geocoder();
        var myOptions = {
              zoom: 9,
              mapTypeId: google.maps.MapTypeId.ROADMAP
            }
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        var bounds = new google.maps.LatLngBounds();
        var encodedString;
        var stringArray = [];
        encodedString = document.getElementById("encodedString").value;
        stringArray = encodedString.split("****");

        var x;
        for (x = 0; x < stringArray.length; x = x + 1)
        {
            var addressDetails = [];
            var marker;
            addressDetails = stringArray[x].split("&&&");
            var lat = new google.maps.LatLng(addressDetails[1], addressDetails[2]);
            marker = new google.maps.Marker({
                map: map,
                position: lat,
                //Content is what will show up in the info window
                content: addressDetails[0]
            });

            markersArray.push(marker);
            google.maps.event.addListener( marker, 'click', function () {
                closeInfos();
                var info = new google.maps.InfoWindow({content: this.content});
                //On click the map will load the info window
                info.open(map,this);
                infos[0]=info;
            });
           //Extends the boundaries of the map to include this new location
           bounds.extend(lat);
        }
        //Takes all the lat, longs in the bounds variable and autosizes the map
        map.fitBounds(bounds);

        //Manages the info windows
        function closeInfos(){
       if(infos.length > 0){
          infos[0].set("marker",null);
          infos[0].close();
          infos.length = 0;
       }
        }

});
</script>

</head>
<body>
<div id='input'>

    <?php
   $encodedString = ""; 
    $x = 0;

    $result = mysql_query("SELECT * FROM `table-name`");
    while ($row = mysql_fetch_array($result, MYSQL_NUM))
    {
        if ( $x == 0 )
        {
             $separator = "";
        }
        else
        {
            $separator = "****";
        }
        $encodedString = $encodedString.$separator.
        "<p class='content'><b>Lat:</b> ".$row[1].
        "<br><b>Long:</b> ".$row[2].
        "<br><b>Name: </b>".$row[3].
        "<br><b>Address: </b>".$row[4].
        "</p>&&&".$row[1]."&&&".$row[2];
        $x = $x + 1;
    }        
    ?>

    <input type="hidden" id="encodedString" name="encodedString" value="<?php echo $encodedString; ?>" /> 
</div>
<div id="map_canvas"></div>

我使用上面的代码从 MySQL 数据库获取谷歌地图位置。

以上代码从 MySQL 数据库中获取 lat、Lang 并动态创建 google map 。

当我运行上面的代码时,它给了我这样的错误:

有两个错误,名为太多递归initMap不是函数

谁能帮我解决一下吗?

提前致谢。

最佳答案

您尚未在 js 文件中定义 initMap。这就是您收到该错误的原因。您可能需要从 google map api 脚本中删除回调部分

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY" async defer></script>

还要检查以下语句中的纬度和经度是否包含有效的数值

var lat = new google.maps.LatLng(addressDetails[1], addressDetails[2]);

关于php - 谷歌地图中的递归太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38784829/

相关文章:

MySQL密码函数

javascript - 动态添加的对象属性未在 Javascript 中添加

php - 查询查询查询

php - MAGMI 适用于多个网站

javascript - 在ajax jquery中显示json响应,

php - MYSQL PHP 按日期排序并将结果按每个日期分组

PHP 包含 JS 库

javascript - jQuery 下拉导航突然消失了

jquery - Javascript自定义函数错误

mysql - 了解为什么收到错误 'result is not defined'