title: Issue with Cache, Maps and MarkerClusterer
body: <p>I have a website built from <code>Google Maps</code> and <code>using MarkerClusterer</code>.  This site works fine most of the time, but there will be times when multiple users will be online and a filtered marker sets request will be returned incorrectly.</p>
  
  <p>Example:  I filter to a set of markers based on a set of filter parameters.  As this is processing someone else also filters to a different set of markers and those markers are returned to me instead of my request.</p>
  
  <p>I can also see this issue occur if I sit on the page and just hit refresh.  I have tested in our test environment with 2 users.  By having one user filter to a set of markers and when the second user refreshes their browser window they see the same set of filtered markers.  The markers of the first user.</p>
  
  <p>I have seen example fixes were it is discussed to use a <code>CacheBuster</code> by adding the Date to the URL, but in using the <code>MarkerCluserer</code> code I do not see where to add that as an option.  It has also been asked not to do this. </p>
  
  <p>Data is coming from the server in an array object.  markerclusterer.js is located locally in the Visual Studio Project. Here is the Script on the page that generates the map:</p>
  
  <pre><code>&lt;script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.11&amp;sensor=false"&gt;&lt;/script&gt;
  &lt;script type="text/javascript" src="/Scripts/markerclusterer.js"&gt;&lt;/script&gt;
  
  &lt;script type="text/javascript"&gt;
  var infowindow;
  var map;
  var markerdataLength; //en - 5-8-2013
  var prev;
  
  $(document).ready(function () {
      setTimeout("gmarkers()", 500);
  });
  
  function gmarkers() {
  
      markerdataLength = 0;
  
      $("#map_canvas").fadeTo(500, 0.3);
      $("#pwait").show();
  
      $.ajax({
          type: "POST",
          url: "MapSearch.aspx/GetMarkers",
          data: "{}",
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          success: function (msg) {
  
              $("#map_canvas").fadeTo(0, 0.3);
              $("#pwait").show();
  
              var markerdata;
              markerdata = msg.d;
              msg = null;
              var latlng = new google.maps.LatLng(52.50, -98.35);
              var myOptions = {
                  zoom: 3,
                  center: latlng,
                  //mapTypeId: google.maps.MapTypeId.HYBRID,
                  mapTypeId: google.maps.MapTypeId.TERRAIN,
                  mapTypeControl: true,
                  mapTypeControlOptions: {
                      position: google.maps.ControlPosition.TOP_RIGHT
                  },
                  panControl: true,
                  panControlOptions: {
                      position: google.maps.ControlPosition.TOP_LEFT
                  },
                  zoomControl: true,
                  zoomControlOptions: {
                      position: google.maps.ControlPosition.TOP_LEFT
                  },
                  scaleControl: true,
                  scaleControlOptions: {
                      position: google.maps.ControlPosition.BOTTOM_CENTER
                  },
                  streetViewControl: true,
                  streetViewControlOptions: {
                      position: google.maps.ControlPosition.TOP_LEFT
                  }
              };
  
              //initialize the info window (balloon popup)
              infowindow = new google.maps.InfoWindow();
  
              //draw the map with the above settings
              map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  
  
              /***************************MARKER CLUSTERER **********************************************/
              var imageUrl = 'http://chart.apis.google.com/chart?cht=mm&amp;chs=24x24&amp;chco=' +
              'FFFFFF,008CFF,000000&amp;ext=.png';  //Blue
  
  
              var markers = [];
  
              if (markerdata != "undefined" &amp; markerdata.length &gt; 0) {  //run this code if the data is not null.  data is the markers in json format
  
                  markerdataLength = markerdata.length; //en - 5-8-2013
  
                  var i = 0;
                  var ro = new RepeatingOperation(function () {
                      var dataWell = markerdata[i];
                      var mlatLng = new google.maps.LatLng(dataWell.la, dataWell.lo);
                      var marker = new google.maps.Marker({
                          id: dataWell.id,
                          position: mlatLng,
                          title: dataWell.t,
                          icon: imageUrl  //iconstring
                      });
                      //set the marker click code to show the info window
                      var fn = markerClick(dataWell.id);
                      google.maps.event.addListener(marker, 'click', fn);
                      google.maps.event.addListener(marker, 'clusteringend', clusteringDone()); //en - 5-8-2013
                      markers.push(marker);
  
                      if (++i &lt; markerdata.length) { ro.step(); }
                      else {
  
                          var mcOptions = {
                              gridSize: 90,   //default grid size is 60 was using 35.  higher #'s draw faster.
                              maxZoom: 20,     //defines how close u are before no more clusters are drawn
                              minimumClusterSize: 15
                          };
  
                          var mc = new MarkerClusterer(map, markers, mcOptions);
                      }
  
                  }, 100);
                  ro.step();
  
              }
  
              else {
                  alert("No wells were found.");
                  $("#map_canvas").fadeTo(300, 1);
                  $("#pwait").hide();
              }
          }
      });
  }
  </code></pre>