2017-09-17 1 views
-1

Szenario: Wählen Sie die Stadt aus dem Dropdown, Holen Sie sich die Benutzer gegen diese Stadt und zeigen Sie ihren Standort.Aktualisieren Google Places Marker Position

Jetzt ist der Teil, wo ich feststecke, dass der Benutzer Standort alle zwei Minuten aktualisiert.

Wie kann ich nur Marker Position auf der Karte nach jeweils zwei Minuten aktualisieren.

Zuerst initialisierte ich die Karte.

var map; 
function initialize() { 
    map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 2, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 
} 

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

Auf wählen ändern Ajax-Request erhalten den Standort basierend auf Stadt und sie auf der Karte zeigen. Bei Erfolg bekomme ich die Standorte und geben diese Stellen zu einem Array und dann übergeben Sie das Array zu . Was gut funktioniert.

$(document).ready(function() { 
    $('.selectCity').change(function() { 
    var city = $(this).val(); 
    $.ajax({ 
     type: 'GET', 
     url: '/riders/location/track', 
     data: { 
     'city': city 
     }, 
     success: function (data) { 
     var positions = []; 
     $.each(data.riders, function(index, value) { 
      positions.push({ 
       lat: value.rider_location.lat, 
       lng: value.rider_location.lng, 
       content: value.name 
      }); 
     }); 
     map.setCenter({ 
      lat: parseInt(positions[0].lat), 
      lng: parseInt(positions[0].lng) 
     }); 
     var infowindow = new google.maps.InfoWindow(); 
     var marker, 
     i; 
     for (i = 0; i < positions.length; i++) { 
      marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(positions[i].lat, positions[i].lng), 
      map: map, 
      }); 
      google.maps.event.addListener(marker, 'click', (function (marker, i) { 
      return function() { 
       infowindow.setContent(positions[i].content); 
       infowindow.open(map, marker); 
      } 
      }) (marker, i)); 
     } 
     } 
    }); 
    }); 
}); 

Wie kann ich nach alle zwei Minuten nur Markierungen Standort auf der Karte aktualisieren. Weil der Speicherort in der Datenbank alle zwei Minuten aktualisiert wird.

+2

Verwendung setInterval() –

+0

@TarangRathod funktioniert, aber ich muss einen anderen Ajax-Aufruf machen, sollte ich nicht? – Gammer

+0

Sie möchten, dass es diese Funktion richtig wiederholt oder eine andere Funktion aufrufen möchte? –

Antwort

1

Angenommen, der Rest Ihres Skripts funktioniert, habe ich es ein wenig neu gemischt; Jetzt ist es in einer Funktion, die Sie jederzeit und überall anrufen können. Lassen Sie mich wissen, ob dies

function updateMarkers() { 
    var city = $('.selectCity').val(); // we do not have 'this' available anymore 
    $.ajax({ 
     type: 'GET', 
     url: '/riders/location/track', 
     data: { 
      'city': city 
     }, 
     success: function(data) { 
      var positions = []; 
      $.each(data.riders, function(index, value) { 
       positions.push({ 
        lat: value.rider_location.lat, 
        lng: value.rider_location.lng, 
        content: value.name 
       }); 
      }); 
      map.setCenter({ 
       lat: parseInt(positions[0].lat), 
       lng: parseInt(positions[0].lng) 
      }); 
      var infowindow = new google.maps.InfoWindow(); 
      var marker, 
       i; 
      for (i = 0; i < positions.length; i++) { 
       marker = new google.maps.Marker({ 
        position: new google.maps.LatLng(positions[i].lat, positions[i].lng), 
        map: map, 
       }); 
       google.maps.event.addListener(marker, 'click', (function(marker, i) { 
        return function() { 
         infowindow.setContent(positions[i].content); 
         infowindow.open(map, marker); 
        } 
       })(marker, i)); 
      } 
     } 
    }); 

} 
var my_timer = null; 
$(document).ready(function() { 
    $('.selectCity').change(function() { 
     // var city = $(this).val(); 
     updateMarkers(); 
     clearInterval(my_timer); // this cancels the previous interval 
     my_timer = setInterval(function() { updateMarkers(); }, 120000); 
    }); 
    my_timer = setInterval(function() { updateMarkers(); }, 120000); 
});