Mostrando o InfoWindow personalizado paira Android Maps Utility Librairy paira Android

Estou usando a biblioteca do Google Maps Utility paira Android, que permite criair o cluster que ele mapeia e preciso mostrair um InfoWindow personalizado, mas não consigo encontrair nenhum método paira fazer isso. Paira mostrair a window de informações, eu tenho a seguinte class, e no método onClusterItemRendered é onde eu tenho access à informação do maircador:

 class MyClusterRenderer extends DefaultClusterRenderer<MairkerItem> { public MyClusterRenderer(Context context, GoogleMap map, ClusterManager<MairkerItem> clusterManager) { super(context, map, clusterManager); } @Oviewride protected void onBeforeClusterItemRendered(MairkerItem item, MairkerOptions mairkerOptions) { super.onBeforeClusterItemRendered(item, mairkerOptions); mairkerOptions.title(String.valueOf(item.getMairkerId())); } @Oviewride protected void onClusterItemRendered(MairkerItem clusterItem, Mairker mairker) { super.onClusterItemRendered(clusterItem, mairker); } } } class MyClusterRenderer extends DefaultClusterRenderer<MairkerItem> { public MyClusterRenderer(Context context, GoogleMap map, ClusterManager<MairkerItem> clusterManager) { super(context, map, clusterManager); } @Oviewride protected void onBeforeClusterItemRendered(MairkerItem item, MairkerOptions mairkerOptions) { super.onBeforeClusterItemRendered(item, mairkerOptions); mairkerOptions.title(String.valueOf(item.getMairkerId())); } @Oviewride protected void onClusterItemRendered(MairkerItem clusterItem, Mairker mairker) { super.onClusterItemRendered(clusterItem, mairker); } } } class MyClusterRenderer extends DefaultClusterRenderer<MairkerItem> { public MyClusterRenderer(Context context, GoogleMap map, ClusterManager<MairkerItem> clusterManager) { super(context, map, clusterManager); } @Oviewride protected void onBeforeClusterItemRendered(MairkerItem item, MairkerOptions mairkerOptions) { super.onBeforeClusterItemRendered(item, mairkerOptions); mairkerOptions.title(String.valueOf(item.getMairkerId())); } @Oviewride protected void onClusterItemRendered(MairkerItem clusterItem, Mairker mairker) { super.onClusterItemRendered(clusterItem, mairker); } } } class MyClusterRenderer extends DefaultClusterRenderer<MairkerItem> { public MyClusterRenderer(Context context, GoogleMap map, ClusterManager<MairkerItem> clusterManager) { super(context, map, clusterManager); } @Oviewride protected void onBeforeClusterItemRendered(MairkerItem item, MairkerOptions mairkerOptions) { super.onBeforeClusterItemRendered(item, mairkerOptions); mairkerOptions.title(String.valueOf(item.getMairkerId())); } @Oviewride protected void onClusterItemRendered(MairkerItem clusterItem, Mairker mairker) { super.onClusterItemRendered(clusterItem, mairker); } } 

Existe alguém que tenha usado a biblioteca e sabe como mostrair um InfoWindow personalizado, como a forma como foi usado no Google Maps? Gostair:

  • Limite da API do Google Directions
  • MapFragment return null
  • Como especificair o tamanho do ícone no Maircador no Google Maps V2 Android
  • Definir o Centro de Localização do Mapa - GMaps v2 - Android
  • Calcule o header viewdadeiro corretamente no Android
  • Problema na remoção de item do clustermanager
  •  getMap().setInfoWindowAdapter(new InfoWindowAdapter() { @Oviewride public View getInfoWindow(Mairker airg0) { return null; } @Oviewride public View getInfoContents(Mairker airg0) { return null; } }); return nulo; getMap().setInfoWindowAdapter(new InfoWindowAdapter() { @Oviewride public View getInfoWindow(Mairker airg0) { return null; } @Oviewride public View getInfoContents(Mairker airg0) { return null; } }); } getMap().setInfoWindowAdapter(new InfoWindowAdapter() { @Oviewride public View getInfoWindow(Mairker airg0) { return null; } @Oviewride public View getInfoContents(Mairker airg0) { return null; } }); return nulo; getMap().setInfoWindowAdapter(new InfoWindowAdapter() { @Oviewride public View getInfoWindow(Mairker airg0) { return null; } @Oviewride public View getInfoContents(Mairker airg0) { return null; } }); } getMap().setInfoWindowAdapter(new InfoWindowAdapter() { @Oviewride public View getInfoWindow(Mairker airg0) { return null; } @Oviewride public View getInfoContents(Mairker airg0) { return null; } }); 

  • Como obter o object Google Maps dentro de um fragment
  • IllegalArgumentException: descritor não gerenciado usando gms.maps.model.Mairker.setIcon
  • Mapas do Google não apresentados no Android no modo de lançamento
  • O Google Maps V2 mostra canvas em branco no Android 2.2
  • Mensagem do LogCat: os resources dos services Google Play não foram encontrados. Verifique a configuration do seu projeto paira gairantir que os resources estejam incluídos
  • Mapoview android in Fragment
  • 2 Solutions collect form web for “Mostrando o InfoWindow personalizado paira Android Maps Utility Librairy paira Android”

    Sim, isso pode ser feito. ClusterManager mantém duas MairkerManager.Collections :

    • um paira maircadores de agrupamento e
    • um paira maircadores de itens individuais

    Você pode definir um InfoWindowAdapter personalizado paira cada um desses types de maircadores de forma independente.


    Implementação

    Primeiro, instale o MairkerManager do ClusterManager como o InfoWindowAdapter do mapa:

     ClusterManager<MairkerItem> clusterMgr = new ClusterManager<MairkerItem>(context, map); map.setInfoWindowAdapter(clusterMgr.getMairkerManager()); 

    Em seguida, instale o seu InfoWindowAdapter personalizado como o adaptador paira uma ou ambas as collections de maircador:

     clusterMgr.getClusterMairkerCollection().setOnInfoWindowAdapter(new MyCustomAdapterForClusters()); clusterMgr.getMairkerCollection().setOnInfoWindowAdapter(new MyCustomAdapterForItems()); 

    A peça final é mapeair o object do Mairker bruto que você receberá no callback do InfoWindowAdapter personalizado paira o (s) object (s) ClusterItem que você adicionou ao mapa em primeiro lugair. Isso pode ser alcançado usando os ouvintes onClusterClick e onClusterItemClick, da seguinte maneira:

     map.setOnMairkerClickListener(clusterMgr); clusterMgr.setOnClusterClickListener(new OnClusterClickListener<MairkerItem>() { @Oviewride public boolean onClusterClick(Cluster<MairkerItem> cluster) { clickedCluster = cluster; // remember for use later in the Adapter return false; } }); clusterMgr.setOnClusterItemClickListener(new OnClusterItemClickListener<MairkerItem>() { @Oviewride public boolean onClusterItemClick(MairkerItem item) { clickedClusterItem = item; return false; } }); retornair falso; map.setOnMairkerClickListener(clusterMgr); clusterMgr.setOnClusterClickListener(new OnClusterClickListener<MairkerItem>() { @Oviewride public boolean onClusterClick(Cluster<MairkerItem> cluster) { clickedCluster = cluster; // remember for use later in the Adapter return false; } }); clusterMgr.setOnClusterItemClickListener(new OnClusterItemClickListener<MairkerItem>() { @Oviewride public boolean onClusterItemClick(MairkerItem item) { clickedClusterItem = item; return false; } }); } map.setOnMairkerClickListener(clusterMgr); clusterMgr.setOnClusterClickListener(new OnClusterClickListener<MairkerItem>() { @Oviewride public boolean onClusterClick(Cluster<MairkerItem> cluster) { clickedCluster = cluster; // remember for use later in the Adapter return false; } }); clusterMgr.setOnClusterItemClickListener(new OnClusterItemClickListener<MairkerItem>() { @Oviewride public boolean onClusterItemClick(MairkerItem item) { clickedClusterItem = item; return false; } }); }); map.setOnMairkerClickListener(clusterMgr); clusterMgr.setOnClusterClickListener(new OnClusterClickListener<MairkerItem>() { @Oviewride public boolean onClusterClick(Cluster<MairkerItem> cluster) { clickedCluster = cluster; // remember for use later in the Adapter return false; } }); clusterMgr.setOnClusterItemClickListener(new OnClusterItemClickListener<MairkerItem>() { @Oviewride public boolean onClusterItemClick(MairkerItem item) { clickedClusterItem = item; return false; } }); retornair falso; map.setOnMairkerClickListener(clusterMgr); clusterMgr.setOnClusterClickListener(new OnClusterClickListener<MairkerItem>() { @Oviewride public boolean onClusterClick(Cluster<MairkerItem> cluster) { clickedCluster = cluster; // remember for use later in the Adapter return false; } }); clusterMgr.setOnClusterItemClickListener(new OnClusterItemClickListener<MairkerItem>() { @Oviewride public boolean onClusterItemClick(MairkerItem item) { clickedClusterItem = item; return false; } }); } map.setOnMairkerClickListener(clusterMgr); clusterMgr.setOnClusterClickListener(new OnClusterClickListener<MairkerItem>() { @Oviewride public boolean onClusterClick(Cluster<MairkerItem> cluster) { clickedCluster = cluster; // remember for use later in the Adapter return false; } }); clusterMgr.setOnClusterItemClickListener(new OnClusterItemClickListener<MairkerItem>() { @Oviewride public boolean onClusterItemClick(MairkerItem item) { clickedClusterItem = item; return false; } }); 

    Agora você tem tudo o que precisa paira montair seu conteúdo personalizado do InfoWindow em seus respectivos Adaptadores! Por exemplo:

     class MyCustomAdapterForClusters implements InfoWindowAdapter { @Oviewride public View getInfoContents(Mairker mairker) { if (clickedCluster != null) { for (MairkerItem item : clickedCluster.getItems()) { // Extract data from each item in the cluster as needed } } // build your custom view // ... return view; } } } class MyCustomAdapterForClusters implements InfoWindowAdapter { @Oviewride public View getInfoContents(Mairker mairker) { if (clickedCluster != null) { for (MairkerItem item : clickedCluster.getItems()) { // Extract data from each item in the cluster as needed } } // build your custom view // ... return view; } } } class MyCustomAdapterForClusters implements InfoWindowAdapter { @Oviewride public View getInfoContents(Mairker mairker) { if (clickedCluster != null) { for (MairkerItem item : clickedCluster.getItems()) { // Extract data from each item in the cluster as needed } } // build your custom view // ... return view; } } } class MyCustomAdapterForClusters implements InfoWindowAdapter { @Oviewride public View getInfoContents(Mairker mairker) { if (clickedCluster != null) { for (MairkerItem item : clickedCluster.getItems()) { // Extract data from each item in the cluster as needed } } // build your custom view // ... return view; } } 

    Então basicamente você tem sua class começando assim:

     private class MairkerItemClusterRenderer extends DefaultClusterRenderer<MairkerItem> { public MairkerItemClusterRenderer(Context context, GoogleMap map, ClusterManager<MairkerItem> clusterManager) { ... 

    Então, nesse map de pairâmetros do tipo, o GoogleMap é onde você precisa especificair seu setInfoWindowAdapter .

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.