Mapa de Google para Android, botón personalizado de mi ubicación

¿Cómo puedo cambiar el botón google map my location default? Configuré mi ubicación habilite y trace la imagen estándar para encontrar la ubicación, ¿es posible cambiar la imagen predeterminada?

Vea a continuación el archivo xml en el botón personalizado:

       

Luego, en la clase java, declara tu botón de ubicación:

 private ImageView imgMyLocation; imgMyLocation = (ImageView) findViewById(R.id.imgMyLocation); 

Haga clic en Evento:

 imgMyLocation.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { getMyLocation(); } 

Obtén el Método de ubicación, en el que simplemente pasas tu latitud y longitud actual.

 private void getMyLocation() { LatLng latLng = new LatLng(Double.parseDouble(getLatitude()), Double.parseDouble(getLongitude())); CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, 18); googleMap.animateCamera(cameraUpdate); } }); 

Si desea mantener la suavidad del botón Mi ubicación predeterminada pero no el aspecto, llame a las siguientes líneas:

 //Make sure you have explicit permission/catch SecurityException mMap.setMyLocationEnabled(true); mMap.getUiSettings().setMyLocationButtonEnabled(false); 

Ahora puede iniciar y detener las actualizaciones de ubicación mientras mantiene el comportamiento predeterminado

Con un simple truco, puedes reemplazar el botón de mi ubicación por uno personalizado.

  1. Personalice el diseño de su nuevo botón.
  2. Establecer mi ubicación habilitada en mapas api.
  3. Ocultar el botón predeterminado de mi ubicación.
  4. llame al método de clic de mi ubicación en su clic personalizado.

1. Personaliza el diseño de tu nuevo botón

agregue un nuevo botón a su ubicación deseada en el archivo de diseño de la actividad del mapa.

      

2. Establecer mi ubicación habilitada en mapas api

 @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; // Enable My Location mMap.setMyLocationEnabled(true); /* and DON'T disable the default location button*/ } 

3. Ocultar el botón predeterminado de mi ubicación.

  //Create field for map button. private View locationButton; @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; mMap.setMyLocationEnabled(true); // get your maps fragment SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); // Extract My Location View from maps fragment locationButton = mapFragment.getView().findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("2")); // Change the visibility of my location button if(locationButton != null) locationButton.setVisibility(View.GONE); } 

4. llame al método de clic de mi ubicación en su clic personalizado.

 findViewById(R.id.ic_location).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(mMap != null) { if(locationButton != null) locationButton.callOnClick(); } } });