刷新用于获取谷歌地图API的Co-Ords的PHP

时间:2014-11-14 23:19:30

标签: javascript php jquery ajax google-maps

我正在使用Google地图API来显示表单提交到我网站的最后位置。所以我将php文件中的lon和lat值作为变量拉出来,但我需要脚本每5秒刷新一次,这样地图标记就会更新,而不会重新加载页面。

以下是google api脚本:

    <script>

      function initialize() {
  var myLatlng = new google.maps.LatLng<?php 
require($DOCUMENT_ROOT . "php_includes/mobile_loc.php");

?>;
  var mapOptions = {
    zoom: 15,
    center: myLatlng
  }
  var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);

  var marker = new google.maps.Marker({
      position: myLatlng,
      map: map,
      title: 'Last Scan'
  });
}

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

</script>

这是php文件:

    <?php 
include_once("php_includes/db_conx.php"); 

$sql = "SELECT * FROM patdub ORDER BY STR_TO_DATE(Timestamp, '%d/%m/%Y %H:%i:%s') DESC LIMIT 1"; 
$query = mysqli_query($db_conx, $sql); 
$row = mysqli_fetch_array($query);

$lon = $row['Lon'];
$lat = $row['Lat'];

echo "($lat, $lon)";

?>

有什么想法吗?我尝试过不同的AJAX方法,但似乎无法弄明白!

编辑:下面的代码行基本上是我需要每5秒刷新一次,但没有任何div标签或任何东西,因为这会干扰google api脚本..

<?php require($DOCUMENT_ROOT . "php_includes/mobile_loc.php"); ?>;

1 个答案:

答案 0 :(得分:0)

您想要调用加载PHP脚本所在的文件,假设它在自己的文件中,您可以这样做,然后您可以使用AJAX调用的返回来更新您的DOM。 你可以在一个javascript循环中包装AJAX调用,例如setInterval(),如下所示:

setInterval(function() {
    $.ajax({
        url: "php_script.php"
    }).done(function(return) {
        console.log(return);
    });
, 5000);

每5秒钟调用一次。

使用您的Google功能来包含它(我不了解谷歌地图,所以这可能不是100%准确):

<script>

    function initialize(myLatlng) {
        myLatlng = myLatlng || new google.maps.LatLng<?php require($DOCUMENT_ROOT . "php_includes/mobile_loc.php");?>;
        var mapOptions = {
            zoom: 15,
            center: myLatlng
        }
        var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);

        var marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            title: 'Last Scan'
        });
    }

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

    setInterval(function() {
        $.ajax(function() {
            url: 'php_script.php'
        }.done(function(response) {
            var latlong = response;
            initialize(latLong)
        });
    }, 5000)

</script>