【问题标题】:How to pass data from MySQL to Google Maps如何将数据从 MySQL 传递到 Google Maps
【发布时间】:2019-12-17 07:04:16
【问题描述】:

我对如何将数据从 PHP 传递到我的谷歌地图 API 感到困惑。

<script>

  <?
        $dbFirst = new database;
        $dbFirst->query("SELECT getLatitude,getLongitude FROM t_report
                         WHERE phoneNumber='$idimei' AND tanggal BETWEEN '$tgl1 00:00:00' and '$tgl1 23:59:59' AND (km IS NOT NULL AND km !='') ORDER BY ID ASC LIMIT 1");  
        $rowFirst=$dbFirst->tampilkan();

        while ($rowFirst=$dbFirst->tampilkan()){
            $lat=$rowFirst['getLatitude'];
            $lon=$rowFirst['getLongtitude'];
        }
    ?>
    var marker;

    function initMap() {

        var mark1 = {lat:X, lng:Y};

        var map = new google.maps.Map(document.getElementById('map'), {
            center: mark1,
            zoom: 18

        });

        marker = new google.maps.Marker({
            position: mark1,
            animation: google.maps.Animation.DROP,
            map: map
        });
        marker.addListener('click', toggleBounce);
    }
    function toggleBounce() {
        if (marker.getAnimation() !== null) {
            marker.setAnimation(null);
        } else {
            marker.setAnimation(google.maps.Animation.BOUNCE);
        }
    }
  </script>

如何将$lat$lon 放入我的mark1 X 和Y 变量?我对如何在 PHP 之外传递数据感到困惑。 谢谢回复

【问题讨论】:

  • 尝试访问您的 php 数据变量或对象到 javascript,然后使 js 仅加载地图并在 javascript 的必填字段中使用这些数据变量。这是有效的方法。因为谷歌地图 api 是内置在 js 中的,比任何其他语言都好。
  • @AjayKumar 感谢您的建议。我的经度为空,因为我说的是经度,而不是经度。

标签: php html mysql maps


【解决方案1】:

您可以使用以下方法将数据从PHP变量传递给JS 假设这是您从数据库中查询数据并将其存储在变量 $lat$lon

中的地方
<?php
//data from DB
$lat = "xx.xx";
$lon = "xx.xx";
?>

<script>
// then echo it into the js
// and assign to a js variable
let lat = '<?php echo $lat ;?>';
let lon = '<?php echo $lon ;?>';
// then
 function initMap() {

        var mark1 = {lat:lat, lng:lon};

        var map = new google.maps.Map(document.getElementById('map'), {
            center: mark1,
            zoom: 18

        });

        marker = new google.maps.Marker({
            position: mark1,
            animation: google.maps.Animation.DROP,
            map: map
        });
        marker.addListener('click', toggleBounce);
    }

</script>```

【讨论】:

  • 我试过这个,它导致我的地图变成空白(灰色区域)但仍然有手拖动地图的指针。我的 $lat 和 $lon 是否为空?
  • 是的,我认为原因之一可能是 $lat 和 $lon 为空。能否将 console.logs 放入 JS 代码中,检查是否从 DB 获取值?
  • 谢谢伙计,我已经弄明白了。我在数据库中的表和我在 $rowFirst 中调用时的表不同。你的代码工作正常
  • 不客气。如果您认为我的回答有帮助,请点赞。 :)
【解决方案2】:

要在 javascript 中将变量 $lat$lon 从 PHP 传递到 XY,您可以这样做:

var marker;
var X ="<?php echo $lat; ?>";
var Y ="<?php echo $lon; ?>";

或更短:

var marker;
var X =<?$lat?>;
var Y =<?$lon?>;

【讨论】:

  • 我试过这个,它导致我的地图变成空白(灰色区域)但仍然有手拖动地图的指针。我的 $lat 和 $lon 是否为空?