Por padrão, os pontos de interesse (PDIs) aparecem no mapa de base com os respectivos ícones. Esses pontos incluem parques, escolas, edifícios governamentais e muito mais.
Além disso, os PDIs de empresas são exibidos por padrão no mapa quando o tipo dele é normal
. Esses pontos representam empresas como lojas, restaurantes, hotéis e outros lugares. Os PDIs de empresas em mapas internos (plantas baixas) só aparecem no Modo Lite.
Um PDI corresponde a um ID de lugar, conforme definido no SDK do Places para Android. Por exemplo, parques são pontos de interesse, mas fontes de água geralmente não são, a menos que tenham relevância nacional ou histórica.
Detectar eventos de clique em PDIs
Se você quiser responder a um clique em um PDI, utilize um objeto OnPoiClickListener
, conforme o exemplo de código a seguir:
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(); } }
Os PDIs aparecem no mapa, mas não há interface padrão ao clicar. Ou seja, a API não exibe automaticamente uma janela de informações ou outra interface do usuário quando alguém toca em um ponto de interesse.
Conforme o exemplo acima, defina OnPoiClickListener
no mapa chamando GoogleMap.setOnPoiClickListener(OnPoiClickListener)
.
Quando um usuário clica (toca) em um PDI, seu app recebe um evento OnPoiClick(PointOfInterest)
indicando o ponto de interesse clicado. O objeto PointOfInterest
contém as coordenadas de latitude/longitude, o ID do lugar e o nome do ponto de interesse.
Impedir que os PDIs sejam exibidos no mapa
Para ocultar pontos de interesse, aplique estilos personalizados a todos os PDIs ou a categorias específicas deles.
A seguinte declaração de estilo JSON oculta todos os PDIs de empresas no mapa:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
Em outro exemplo, o JSON abaixo simplifica a exibição de todas as categorias de PDIs:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Para ver o código Java e outros detalhes, consulte o guia sobre como ocultar elementos do mapa com estilos.