Empresas y otros puntos de interés

De forma predeterminada, los puntos de interés (POI) aparecen en el Mapa base junto con sus íconos correspondientes. Los POI incluyen parques, escuelas, edificios gubernamentales y mucho más.

Además, los POI comerciales aparecen de forma predeterminada en el mapa cuando el tipo de mapa es normal. Estos representan a empresas como tiendas, restaurantes, hoteles, etc. Los POI comerciales en mapas de interiores (planos de edificios) solo aparecen en mapas modo lite.

Un POI corresponde a un lugar, según se define en la API de Places. Por ejemplo, los parques recreativos son POI, pero las fuentes de agua, por ejemplo, no suelen considerarse como tales (a menos que tengan cierta importancia histórica o nacional).

Escucha eventos de clic en los POI

Si deseas responder cuando un usuario presione un POI, puedes utilizar un objeto de escucha OnPoiClickListener como se ejemplifica en la siguiente muestra de código:

public class OnPoiClickDemoActivity extends FragmentActivity
        implements OnMapReadyCallback, GoogleMap.OnPoiClickListener {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.poi_click_demo);

            SupportMapFragment 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(getApplicationContext(), "Clicked: " +
                            poi.name + "\nPlace ID:" + poi.placeId +
                            "\nLatitude:" + poi.latLng.latitude +
                            " Longitude:" + poi.latLng.longitude,
                    Toast.LENGTH_SHORT).show();
        }
    }
    

Los POI aparecen en el mapa de forma predeterminada, pero no hay una IU on-click predeterminada. Es decir, cuando el usuario presiona un POI, 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 POI (o lo presione), tu app recibirá un evento OnPoiClick(PointOfInterest) que indicará ese POI. La porción PointOfInterest contiene las coordenadas de latitud y longitud, el ID del lugar y el nombre del punto de interés.

Deja de mostrar POI en el mapa

Para ocultar puntos de interés (POI), puedes aplicar estilos personalizados a todos ellos o a determinadas categorías.

La siguiente declaración de estilo JSON oculta todos los POI 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 POI:

[
      {
        "featureType": "poi",
        "stylers": [
          { "visibility": "simplified" }
        ]
      }
    ]
    

Para obtener el código Java y otros detalles, consulta la guía sobre cómo ocultar los elementos del mapa con estilos.