使用PHP数据在Google Maps上放置多个标记

时间:2019-03-16 21:14:57

标签: javascript php google-maps

我正在一个网页上,该网页从MySQL数据库获取信息,然后根据数据在地图上放置多个标记。当我的地图集成正常工作时,我使用PHP数据的代码阻止了地图的显示。但是,它没有显示任何错误。

这是代码。我是JavaScript新手,但我相信问题出在具有PHP echo语句的函数中。我非常感谢您的帮助。

PHP:

$lat = [];
$long = [];
$location = [];
$id = [];
$count = 0;
$count2 = 0;
$query = "SELECT * FROM table_name Order BY id DESC";
$result = mysqli_query($con, $query);
while ($row = mysqli_fetch_assoc($result)) {
    array_push($id, $row['id']);
    $count++;
}
for ($i = 0; $i < $count; $i++) {
    $webId = $id[$i];
    $webSearch = mysqli_query($con, "SELECT * FROM table_name WHERE id='$webId'");
    $web = mysqli_fetch_array($webSearch);
    array_push($lat, $row['lat']);
    array_push($long, $row['longi']);
    array_push($location, $row['city']);
}

JavaScript:

// Initialize and add the map
function initMap() {
    var count = <?php echo $count;?>;
    for (var i = 0; i < count; i++) {
        var marker = new google.maps.Marker({
            position: {
                lat: <?php echo $lat[$count2];?>,
                lng: <?php echo $long[$count2]; ?>
            },
            map: map,
            title: <?php echo $lat[$count2]; $count2++;?>
        });
    }
}

2 个答案:

答案 0 :(得分:0)

我了解为什么未显示地图。它缺少以下地图初始化。

  var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 2,
            center: {lat: 25.363, lng: 131.044}
          });

PHP变量名称也存在错误。在此之后,PHP数据完美地传递给了Javascript。但是,for循环仅打印出一个标记。

答案 1 :(得分:0)

我无法理解两个sql查询的目的-选择 表格中的所有内容,然后再次从中选择所有内容 同一张表...据我所知,一个查询就足够了。

此外,在javascript中使用PHP并期望计数器$count2可以是初始值(如此处)或最后值(如果已更改)以外的任何值,这将是谬论。由于$count2最初被赋予了值0,因此它保留了该值,因为该变量从未在任何地方更改,而是在javascript代码中用于从PHP变量$lat和{{1 }}-始终会产生相同的结果,从而呈现单个标记-或在同一位置显示多个标记。

也许考虑采用以下方法,其中php代码运行并获取记录集,并转换为JSON数据,以便地图代码仅使用javascript进行本机处理。

$long