2014-11-14 41 views
0

我正在使用谷歌地圖API來顯示錶單提交到我的網站的最後一個位置。因此,我將PHP文件中的lon和lat值作爲變量進行抽取,但我需要腳本每5秒刷新一次,以便地圖標記更新,而無需重新加載頁面。刷新獲取谷歌地圖的合作社的PHP PHP

下面是谷歌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標籤或任何東西,因爲這與谷歌的API腳本干擾位..

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

有一個在你的代碼中沒有AJAX。你需要AJAX。說:「我試過不同的AJAX方法」,然後沒有顯示任何不是很有用的診斷爲什麼它不工作:) – Amadan 2014-11-14 23:25:29

回答

0

你想打電話加載你的PHP腳本所在的文件,假設它在它自己的文件中,你可以這樣做,然後你可以使用AJAX調用的返回來更新你的DOM。 你想包AJAX調用在JavaScript循環如的setInterval()這樣的:

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

要調用它每隔5秒。

當您谷歌功能incorportate它(我沒有谷歌的知識地圖所以這可能不是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> 
+0

所以我會把這個JavaScript循環之前的谷歌API腳本?或在不同的腳本標籤內?感謝您的回覆,這非常有幫助! – 2014-11-14 23:33:05

+0

我會把它放在google API腳本之後,然後當你從PHP函數返回時,調用Google API函數並傳遞數據。我將編輯我的答案來解釋這一點。 – DrRoach 2014-11-14 23:34:23

+0

是的,沒有工作,一旦我添加代碼,根本沒有地圖顯示,我甚至嘗試更改間隔爲30秒,並將響應變量更改爲「var myLatlong」,但仍然沒有:( – 2014-11-14 23:50:05