Google Maps se usa en muchas aplicaciones para mostrar una ubicación e indicar una ubicación específica en un mapa. Hemos visto el uso de mapas en muchas aplicaciones que brindan servicios como Ola, Uber y muchas más. En estas aplicaciones, podrá ver cómo podemos agregar un marcador personalizado a Google Maps en Android.
¿Qué vamos a construir en este artículo?
Construiremos una aplicación simple en la que mostraremos un mapa y, en ese mapa, mostraremos un marcador personalizado en nuestra aplicación. A continuación se muestra la captura de pantalla en la que veremos lo que vamos a hacer en este proyecto.
Implementación paso a paso
Paso 1: Crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación. Asegúrese de seleccionar Actividad de mapas al crear un nuevo proyecto.
Paso 2: generar una clave API para usar Google Maps
Para generar la clave API para Maps, puede consultar Cómo generar la clave API para usar Google Maps en Android . Después de generar su clave API para Google Maps. Tenemos que añadir esta clave a nuestro Proyecto. Para agregar esta clave en nuestra aplicación, navegue a la carpeta de valores> archivo google_maps_api.xml y en la línea 23 debe agregar su clave API en lugar de YOUR_API_KEY . Después de agregar esto, ahora estamos listos para agregar el marcador personalizado a nuestra aplicación. Después de agregar la clave API, puede ejecutar su aplicación y podrá ver un marcador predeterminado en la ubicación de Sydney con el marcador predeterminado.
Paso 3: Agregar un marcador personalizado en Google Maps
Para agregar un marcador personalizado a Google Maps, navegue a la aplicación> res> dibujable> Haga clic con el botón derecho en él> Nuevo> Activos vectoriales y seleccione el ícono que tenemos que mostrar en su Mapa. Puede cambiar el color según nuestros requisitos. Después de crear este ícono, avanzaremos hacia la adición de este marcador a nuestro Mapa.
Paso 4: trabajar con el archivo MapsActivity.java
MapsActivity.java MapsActivity.java
Java
import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.os.Bundle; import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentActivity; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.BitmapDescriptor; import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { private GoogleMap mMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); // Obtain the SupportMapFragment and get notified // when the map is ready to be used. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); } /** * Manipulates the map once available. * This callback is triggered when the map is ready to be used. * This is where we can add markers or lines, add listeners or move the camera. In this case, * we just add a marker near Sydney, Australia. * If Google Play services is not installed on the device, the user will be prompted to install * it inside the SupportMapFragment. This method will only be triggered once the user has * installed Google Play services and returned to the app. */ @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; // Add a marker in Sydney and move the camera LatLng sydney = new LatLng(-34, 151); mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney") // below line is use to add custom marker on our map. .icon(BitmapFromVector(getApplicationContext(), R.drawable.ic_flag))); mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); } private BitmapDescriptor BitmapFromVector(Context context, int vectorResId) { // below line is use to generate a drawable. Drawable vectorDrawable = ContextCompat.getDrawable(context, vectorResId); // below line is use to set bounds to our vector drawable. vectorDrawable.setBounds(0, 0, vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight()); // below line is use to create a bitmap for our // drawable which we have added. Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); // below line is use to add bitmap in our canvas. Canvas canvas = new Canvas(bitmap); // below line is use to draw our // vector drawable in canvas. vectorDrawable.draw(canvas); // after generating our bitmap we are returning our bitmap. return BitmapDescriptorFactory.fromBitmap(bitmap); } }
Ahora ejecute su aplicación y vea el resultado de la aplicación.
Producción:
Nota: En Google Developer Console ( https://console.developers.google.com ), asegúrese de que la » API de Android de Google Maps v2 » esté habilitada. Y también asegúrese de que su clave API exista.
Publicación traducida automáticamente
Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA