De forma predeterminada, los lugares de interés aparecen en el Mapa base junto con sus íconos correspondientes. Los lugares de interés incluyen parques, escuelas, edificios gubernamentales y mucho más.
Además, los lugares de interés comerciales aparecen de forma predeterminada en el mapa cuando el tipo de mapa es normal
. Estos representan empresas como tiendas, restaurantes, hoteles, etc. Los lugares de interés comerciales en mapas de interiores (planos de edificios) solo aparecen en mapas en el modo lite.
Un lugar de interés corresponde a un ID de lugar, según se define en el SDK de Places para Android. Por ejemplo, los parques recreativos son lugares de interés, pero los elementos como las fuentes de agua no suelen considerarse como tales (a menos que tengan cierta importancia histórica o nacional).
Escucha eventos de clic en los lugares de interés
Si deseas responder cuando un usuario presione un lugar de interés, puedes utilizar un objeto de escucha OnPoiClickListener
como se ejemplifica en la siguiente muestra de código:
Kotlin
internal class OnPoiClickDemoActivity : AppCompatActivity(), OnMapReadyCallback, OnPoiClickListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.poi_click_demo) val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) } override fun onMapReady(map: GoogleMap) { map.setOnPoiClickListener(this) } override fun onPoiClick(poi: PointOfInterest) { Toast.makeText(this, """Clicked: ${poi.name} Place ID:${poi.placeId} Latitude:${poi.latLng.latitude} Longitude:${poi.latLng.longitude}""", Toast.LENGTH_SHORT ).show() } }
Java
class OnPoiClickDemoActivity extends AppCompatActivity implements OnMapReadyCallback, GoogleMap.OnPoiClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.poi_click_demo); SupportMapFragment mapFragment; mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap map) { map.setOnPoiClickListener(this); } @Override public void onPoiClick(PointOfInterest poi) { Toast.makeText(this, "Clicked: " + poi.name + "\nPlace ID:" + poi.placeId + "\nLatitude:" + poi.latLng.latitude + " Longitude:" + poi.latLng.longitude, Toast.LENGTH_SHORT).show(); } }
Los lugares de interés aparecen en el mapa de forma predeterminada, pero no hay una IU para clic predeterminada. Es decir, cuando el usuario presiona un lugar de interés, la API no muestra automáticamente una ventana de información ni ninguna otra interfaz de usuario.
Como se muestra en el ejemplo anterior, debes llamar a GoogleMap.setOnPoiClickListener(OnPoiClickListener)
para configurar el objeto de escucha OnPoiClickListener
en el mapa.
Cuando un usuario haga clic en un lugar de interés (o lo presione), tu app recibirá un evento OnPoiClick(PointOfInterest)
que indicará el lugar de interés que el usuario seleccionó. La porción PointOfInterest
contiene las coordenadas de latitud y longitud, el ID del lugar y el nombre del lugar de interés.
Deja de mostrar lugares de interés en el mapa
Para ocultar lugares de interés, puedes aplicar diseños personalizados a todos ellos o a determinadas categorías.
La siguiente declaración de diseño JSON oculta todos los lugares de interés comerciales en el mapa:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
En este otro ejemplo, el siguiente JSON simplifica la visualización de todas las categorías de lugares de interés:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Para obtener el código Java y otros detalles, consulta la guía sobre cómo ocultar los componentes del mapa con los ajustes de diseño.