title: How to change marker's color in maps?
body: <p>I need some help to change a marker color, in android using android studio.</p>
  
  <p>I put all the markers in the map. Perfect.</p>
  
  <p>I would like to show a message when the user select the point. To get sure, the user must click twice in the marker. </p>
  
  <p>Everything ok, the user does this, I change the color and the marker changes.</p>
  
  <p>BUT, when I click in another mark or whathever place in the map, the color returns the original.</p>
  
  <p>It seems that I change the wrong mark (another object). </p>
  
  <p>This is the method to print the markers</p>
  
  <pre><code>public void plot(){
          NumberFormat format = new DecimalFormat("0");
          for (Coordinate c: pointsList) {
              LatLng temp = new LatLng(c.getLat(), c.getLng());
              Marker marker = mMap.addMarker(new MarkerOptions()
                      .position(temp)
                      .title("Ponto " + c.getDescricao())
                      .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
              marker.setTag("Ponto " + c.getDescricao());
          }
      }
  </code></pre>
  
  <p>I have a listener to him and its show a message wit 2 options, confirm or cancel:</p>
  
  <pre><code>@Override
      public void onDialogPositiveClick(DialogFragment dialog) {
          getSelectedPoint().setSnippet("Selected!");
                  getSelectedPoint().setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE));
  
      }
  </code></pre>
  
  <p>and </p>
  
  <blockquote>
  <pre><code>@Override
  public void onDialogNegativeClick(DialogFragment dialog) {
      Toast.makeText(getBaseContext(), "Cancel the dialog", Toast.LENGTH_SHORT).show();
  }
  </code></pre>
  </blockquote>
  
  <p>Somebody can help-me? I Need that color stays AZURE, not returns to RED.</p>
  
  <p>EDIT1: When I click in the marker again, the color is correct, AZURE. But, when click in another place, the color returns to RED.</p>
  
  <p>EDIT2: The code</p>
  
  <pre><code>public class Navigator extends FragmentActivity
          implements FragmentoDialogo.NoticeDialogListener, OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {      
  
      private static Marker pontoSelecionado;    
  
      public Marker getPontoSelecionado() {
          return pontoSelecionado;
      }
  
      public void setPontoSelecionado(Marker pontoSelecionado) {
          this.pontoSelecionado = pontoSelecionado;
      }
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
          mGoogleApiClient = new GoogleApiClient.Builder(this)
                  .enableAutoManage(this /* FragmentActivity */,
                          this /* OnConnectionFailedListener */)
                  .addConnectionCallbacks(this)
                  .addApi(LocationServices.API)
                  .addApi(Places.GEO_DATA_API)
                  .addApi(Places.PLACE_DETECTION_API)
                  .build();
          mGoogleApiClient.connect();
  
          Bundle b = getIntent().getExtras();
          pointsList = b.getParcelableArrayList("Points");
  
          setContentView(R.layout.navigator_ac);
  
          MapFragment mapFragment = (MapFragment) getFragmentManager()
                  .findFragmentById(R.id.map);
          mapFragment.getMapAsync(this);
      }
  
      @Override
      public void onMapReady(GoogleMap googleMap) {
          mMap = googleMap;
  
          plotarPontosDeColeta();
          plotarCaminhamento();
  
          escutarCliqueMarcador();
          // Turn on the My Location layer and the related control on the map.
          updateLocationUI();
  
          // Get the current location of the device and set the position of the map.
          getDeviceLocation();
  
          LatLng ponto1 = new LatLng(pointsList.get(1).getLat(), pointsList.get(1).getLng());
  
          CameraPosition cameraPos = new CameraPosition.Builder().target(ponto1)
                  .zoom(45).bearing(20).tilt(80).build();
  
          googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos), null);
      }
  
      public void plotarPontosDeColeta(){
          NumberFormat format = new DecimalFormat("0");
          for (Coordinate c: pointsList) {
              LatLng temp = new LatLng(c.getLat(), c.getLng());
              Marker marker = mMap.addMarker(new MarkerOptions()
                      .position(temp)
                      .title("Ponto " + c.getDescricao())
                      .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
              marker.setTag("Ponto " + c.getDescricao());
          }
      }
  
      private void plotarCaminhamento() {
          NumberFormat format = new DecimalFormat("0");
  
          ArrayList&lt;Polyline&gt; listaLinhas = new ArrayList&lt;&gt;();
          final ArrayList&lt;MarkerOptions&gt; listaMarcadores = new ArrayList&lt;&gt;();
          PolylineOptions lineOptions;
  
          try {
              for (int i=0; i&lt;pointsList.size(); i++){
                  LatLng aux1 = new LatLng(pointsList.get(i).getLat(),pointsList.get(i).getLng());
                  LatLng aux2 = new LatLng(pointsList.get(i+1).getLat(),pointsList.get(i+1).getLng());
                  lineOptions = new PolylineOptions().clickable(true).add(aux1).add(aux2);
                  Polyline polyline = mMap.addPolyline(lineOptions);
                  polyline.setTag(i);
                  listaLinhas.add(polyline);
  
                  listaMarcadores.add(new MarkerOptions()
                          .position(PointsHandler.encontrarPontoMedio(aux1, aux2))
                          .alpha(0f)
                          .title(""+ format.format(pointsList.get(i).getDistanciaProximoPonto()) + "m"));
              }
          } catch (Exception e){
              //TODO
          }
  
          mMap.setOnPolylineClickListener(new GoogleMap.OnPolylineClickListener(){
              @Override
              public void onPolylineClick(Polyline polyline)
              {
                  int tag = (Integer) polyline.getTag();
                  mMap.addMarker(listaMarcadores.get(tag)).showInfoWindow();
              }
          });
      }
  
      public void escutarCliqueMarcador(){
          mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
              @Override
              public boolean onMarkerClick(Marker marker) {
                  if (getPontoSelecionado() == null) {
                      setPontoSelecionado(marker);
                      Toast.makeText(getBaseContext(), "Clique novamente para confirmar!", Toast.LENGTH_SHORT).show();
                      return false;
                  }
  
                  if (getPontoSelecionado().getTag().equals(marker.getTag())) {
                      showDialog();
                  } else {
                      setPontoSelecionado(marker);
                      Toast.makeText(getBaseContext(), "Clique novamente para confirmar!", Toast.LENGTH_SHORT).show();
                  }
  
                  return false;
              }
          });
      }
  
      public void showDialog() {
          DialogFragment dialog = new FragmentoDialogo();
          dialog.show(getFragmentManager(), "FragmentoDialogo");
      }
      @Override
      public void onDialogPositiveClick(DialogFragment dialog) {
          getPontoSelecionado().setSnippet("Coleta efetuada");
          getPontoSelecionado().setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE));
          getPontoSelecionado().showInfoWindow();            
      }
  
      @Override
      public void onDialogNegativeClick(DialogFragment dialog) {
          Toast.makeText(getBaseContext(), "Ponto não confirmado", Toast.LENGTH_SHORT).show();
      }
  }
  </code></pre>