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:
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()
}
}
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.