-1

因此,我爲我的應用程序創建了godview,以便我可以實時看到當前用戶,但我堅持了這個問題。我使用ajax渲染我的地圖,並在地圖上顯示我表格中的第一個用戶作爲標記。如何使用ajax將標記添加到Google地圖

function getUsers(){ 

if (window.XMLHttpRequest){ 
    var xmlhttp = new XMLHttpRequest(); 
} else { 
    var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); 
} 

xmlhttp.onreadystatechange = function(){ 

    if(xmlhttp.statusText === "OK"){ 

     var China = {lat: 9.081999, lng: -8.675277}; 
     var image = "node.png"; 

     var map = new google.maps.Map(mapDiv, { 
       zoom: 3, 
       center: China, 
       draggable: true, 
       streetViewControl: true, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }); 

     var data = JSON.parse(xmlhttp.responseText); 

     for (var i = 0; i < data.length; i++){ 

      lastid = data[i].lastid; 


      marker = new google.maps.Marker({ 
       position: new google.maps.LatLng(data[i].latitude, data[i].longitude), 
       map: map, 
       icon: image 
      }); 
     } 
    } 
} 

當應用程序第一次加載時,我只得到第一個用戶,這很好。然後,我想以一定的時間間隔獲取id大於第一個的新用戶。

//Php that fetches the new result 
    $lastId = $_GET['lastid']; 

    $sql = "select * from user where id > '$lastId' limit 1"; 
    $result = mysqli_query($conn, $sql); 

    if($result){ 

     $count = mysqli_num_rows($result); 

     if($count > 0){ 

      while($row = mysqli_fetch_assoc($result)){ 

       $user = ['lastid' => $row['id'], 'username' => $row['username'], 'latitude' => $row['latitude'], 'longitude' => $row['longitude']]; 
      } 

      echo json_encode($user); 
     } 
    } 


//Ajax call fetches the new users look something like this 
function addNewUser(lastid){ 


if (window.XMLHttpRequest){ 
    var xmlhttp = new XMLHttpRequest(); 
} else { 
    var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); 
} 

xmlhttp.onreadystatechange = function(){ 

    if(xmlhttp.statusText === "OK"){ 

     var data = JSON.parse(xmlhttp.responseText); 

     lastid = data.lastid; 

    } 
} 

xmlhttp.open('GET', 'fetchusers.php?user&lastid=' + lastid,true); 
xmlhttp.send(); 
} 

我嘗試通過lastid,在我的onload運行一些間隔方法來獲取最新版本。我的困境是將這個新結果作爲標記添加到地圖中,以便在沒有刷新和逐項更新的情況下自動添加。

window.onload = function(){ 
    getUsers(); 

    setInterval(() => { 
    addNewUser(lastid); 
}, 5000); 

回答

0

不要爲每個用戶創建一個新地圖,創建一個全局地圖變量,初始化一次,然後添加您的用戶。

+0

Grt,這是一種方式去回合它。但你的回答沒有公平地使用ajax追加標記 –

+0

你有什麼問題嗎?如果你想要工作代碼,請提供[mcve] – geocodezip

相關問題