title: Android google maps v2 performance issues
body: <p>i'm struggling with a problem and tried to solve it by weeks but without a solution that meets my needs. My problem it's I've to add multiple markers (>=6000) to my map and after all the ideas/suggestions and investigation i'm still with performance issues, because adding a marker to the map it's on the main thread even when the marker it's constructed in a background thread.</p>
  
  <p><strong>Assumptions&amp;Progress:</strong></p>
  
  <ul>
  <li>I've allready read:<a href="https://developers.google.com/maps/articles/toomanymarkers">Too many markers</a></li>
  <li>I'am using clustering</li>
  <li>I'am only adding markers of the visible region to limit the amount of markers and suppress unnecessary load</li>
  <li>I've already tried using Handlers and now i'am using Asynctask because i realize they're a little bit faster (or it's just placebo)</li>
  <li>At the moment i'am adding markers in the onProgressUpdate (one by one) but i've allready tried to send a List and add the markers in the OnPostExecute(result) but the performance its worst.</li>
  </ul>
  
  <p><strong>My code:</strong></p>
  
  <pre><code>private class MarkerTask extends AsyncTask&lt;Positions, MarkerOptions, Void&gt; {
      Projection projection;
  
      @Override
      protected void onPreExecute() {
          super.onPreExecute();
          projection = mMap.getProjection();
      }
  
      @Override
      protected Void doInBackground(Positions... params) {
          List&lt;Vessel&gt; positionsList = new ArrayList&lt;Vessel&gt;(params[0].getList());
          LatLngBounds bounds = projection.getVisibleRegion().latLngBounds;
  
          for (int i = 0; i &lt; positionsList.size(); i++) {
                  if (bounds.contains(locationLatLng) &amp;&amp; interval.contains(DateTimeUtc)) {
                  MarkerOptions markerOptions = new MarkerOptions();
                  markerOptions.position(locationLatLng);
                  markerOptions.title(name);
                  markerOptions.rotation(getHeading());
                  markerOptions.snippet(id);
                  markerOptions.anchor(Constants.MARKER_ANCHOR_CENTER, Constants.MARKER_ANCHOR_CENTER);
  
                  publishProgress(markerOptions);
                  positionsList.remove(i);
                  if (isCancelled())
                      break;
              }
          }
  
          return null;
      }
  
      @Override
      protected void onProgressUpdate(MarkerOptions... values) {
          mMap.addMarker(values[0]);
          mMap.setOnMarkerClickListener(onMarkerClick());
      }
  </code></pre>
  
  <p>Any suggestions how to improve the performance??</p>