2016-04-01 15 views
1

Die Datenbanktabelle wird alle 20 Sekunden mit neuen Daten aktualisiert. Ich möchte den Marker auf der Karte mit neuem Lat verschieben & lang. Ich habe versucht, alle 30 Sekunden eine Abfrage auszuführen, um den letzten Datensatz der Tabelle zu erhalten und die Position des Markers zu aktualisieren. Map lädt, der Marker wird angezeigt und die JavaScript-Funktion wird auch aufgerufen. Aber der Marker bewegt sich nicht. Bitte helfen ..Marker auf Google Map mit Echtzeitdaten verschieben

<?php 
include "db_connect.php"; 
$sql="SELECT * FROM temperature_details ORDER BY id DESC LIMIT 1 "; 
$result=mysql_query($sql); 

$firstrow = mysql_fetch_assoc($result); 


function getNewLatLang(){ 
$sql="SELECT * FROM temperature_details ORDER BY id DESC LIMIT 1 "; 
$result=mysql_query($sql); 

$latLang = mysql_fetch_assoc($result); 

echo $latLang['latitude'].','. $latLang['longitude']; 

} 
?> 
<script src="http://maps.googleapis.com/maps/api/js?key=API_KEY&libraries=geometry"></script> 

<div id="map" style="height:500px;width:100%;" ></div> 

<script> 

function initialize() { 

var myLatLng = new google.maps.LatLng(<?php echo $firstrow['latitude'].','. $firstrow['longitude'];?>), 
    myOptions = { 
     zoom: 16, 
     center: myLatLng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
     }, 
    map = new google.maps.Map(document.getElementById('map'), myOptions ), 
    marker = new google.maps.Marker({position: myLatLng, map: map}); 

marker.setMap(map); 
moveMarker(map, marker); 

} 
function moveMarker(map,marker) { 


setInterval(function(){ 

    marker.setPosition(new google.maps.LatLng(<?php echo getNewLatLang(); ?>)); 

    map.panTo(new google.maps.LatLng(<?php echo getNewLatLang(); ?>)); 
    console.log("I am working"); 

}, 30000); 

}; 

initialize(); 

</script>  
+0

Ich entfernte den Marker und legte einen neuen in einem Simil Situation. Workaroundish aber macht den Job. – Max

+0

@Max Bitte setzen Sie den Code .. – Hirantha

+0

Kann nicht sofort. unterwegs für ein paar mehr tage auf telefon beschränkt. sry – Max

Antwort

0

ein Problem var Scoping scheint .... versuchen, die var Karte erklären und Marker

<script> 

// Declare the var for global scoping visibilty 
var map; 
var marker; 

function initialize() { 

    var myLatLng = new google.maps.LatLng(<?php echo $firstrow['latitude'].','. $firstrow['longitude'];?>), 
     myOptions = { 
     zoom: 16, 
     center: myLatLng, 
     ...... 
+0

Ich habe solche Wechsler. Aber nicht funktioniert. – Hirantha

0

Änderung movemarker() auf:

function moveMarker(){ 
    setInterval(function(){ 
     $.get("point", function(data){ 
     var latlng= $.parseJSON(data); 
     mymarker.setPosition(new google.maps.LatLng({latlng})); 
    }); 
}, 30000); 

Und für " Punkt "Seite Do:

<?php 
    //get last lat and long and send with under code 
    echo json_encode($arr); 
?>