Ruby on rails 谷歌地图重新加载标记刷新缩放

Ruby on rails 谷歌地图重新加载标记刷新缩放,ruby-on-rails,google-maps,gmaps4rails,Ruby On Rails,Google Maps,Gmaps4rails,我一直在关注gmaps4rails gem,我能够用setinterval函数重新加载标记。我面临的问题是,在每次间隔之后,贴图都会回到原始状态,也就是说,如果放大,它会回到正常状态 这是密码 success: (data, jqxhr, status) -> console.log('data.bookings', data) $('#multi_markers').removeClass('hidden') $('.empty_booking_text').removeCl

我一直在关注gmaps4rails gem,我能够用setinterval函数重新加载标记。我面临的问题是,在每次间隔之后,贴图都会回到原始状态,也就是说,如果放大,它会回到正常状态

这是密码

success: (data, jqxhr, status) ->
  console.log('data.bookings', data)
  $('#multi_markers').removeClass('hidden')
  $('.empty_booking_text').removeClass('hidden')
  $('#sidebar_container').html('Please click any booking marker on the map')
  markers_from_api = data.bookings
  handler = Gmaps.build('Google')
  settings = {
    internal: {
      id: 'multi_markers'
    },
    provider:{
      styles: mapStyles
    }
  }
  handler.buildMap settings, ->
    markers = handler.addMarkers(markers_from_api)
    _.each markers,(marker, j) ->
      google.maps.event.addListener marker.serviceObject, 'click', (object) ->
        console.log marker.serviceObject.position.lng()
        render_marker_data markers_from_api[j].id
        return
    handler.bounds.extendWith markers
    handler.fitMapToBounds()
  setInterval () ->
    $ -> update_marker_data(handler)
  , 10000
我每10秒更新一次标记

update_marker_data = (handler) ->
  markers = []
  $.ajax '/technician_locations/current_location',
    type: 'GET'
    success: (data, jqxhr, status) ->
      # handler.removeMarkers()
      console.log(data)
      tech_markers_from_api = data.technician_locations
      tech_markers = handler.addMarkers(tech_markers_from_api)
      _.each tech_markers,(marker, j) ->
        markers.push(marker)
        # google.maps.event.addListener marker.serviceObject, 'click', (object) ->
        #   render_marker_data tech_markers_from_api[j].id
        #   return
      # handler.bounds.extendWith tech_markers
      setInterval () ->
        $ -> remove_marker(markers)
      , 9000
      handler.fitMapToBounds()
您可以参考此代码示例。您只需要使用x间隔替换标记


handler=Gmaps.build('Google');
buildMap({provider:{},internal:{id:'map'}},function(){
markers=handler.addMarkers();
handler.bounds.extendWith(markers);
$(文档).ready(函数(){
setInterval(函数(){
$(函数(){
$.ajax({
键入:“获取”,
url:“/path\u to\u controller\u action”,
数据类型:“json”,
数据:{some_id:1},
成功:函数(结果){
对于(var i=0;i
fitMapToBounds的具体功能是什么?据我所知,它将缩放和/或居中地图,以便所有标记在视口内可见,这似乎是问题所在。
<script>
    handler = Gmaps.build('Google');
        handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
           markers = handler.addMarkers(<%=raw @hash.to_json %>);
           handler.bounds.extendWith(markers);
           $( document ).ready(function() {         
            setInterval(function(){
                $(function () {
                    $.ajax({
                      type:"GET",
                      url:"/path_to_controller_action",
                      dataType:"json",
                      data: {some_id:1},
                      success:function(result){                     
                        for (var i = 0; i < markers.length; i++) {
                          markers[i].setMap(null);
                          handler.removeMarkers(markers);
                        }
                        markers = [];
                        markers = handler.addMarkers(result);
                        handler.bounds.extendWith(markers);                         
                      }
                    })
                });
               }, 10000);
            handler.fitMapToBounds();
            handler.getMap().setZoom(17);     
            });             
        });
</script>