Autore Topic: Mappa con custom Marker + visualizzazione all Markers  (Letto 552 volte)

Offline fabio.dnaweb

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung 19100
  • Sistema operativo:
    Windows 7
Mappa con custom Marker + visualizzazione all Markers
« il: 17 Gennaio 2014, 17:46:49 CET »
0
Salve ragazzi vi espongo il mio problema ma prima vi mostro il codice che ho generato in modo da seguirmi con maggior dettaglio:

Codice (Java): [Seleziona]
// Allora in una mia Activity ho:

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState, R.layout.activity_map);

                GoogleMap map = ((SupportMapFragment) getSupportFragmentManager()
                                .findFragmentById(R.id.map)).getMap();

                if (map != null) {
                        // Ciclo un mio ArrayList contenente contenuti con relative Latitudine e Longitudine
                        for (int i = 0; i < Contenuti.size(); i++) {
                                double lat = Double.parseDouble(Contenuti.get(i)
                                                .getLatitude());
                                double lng = Double.parseDouble(Contenuti.get(i)
                                                .getLongitude());

                                LatLng PUNTI = new LatLng(lat, lng);
                                String title = Contenuti.get(i).getName();

                                map.addMarker(new MarkerOptions()
                                                .position(POI_POINT).title(title));
                        }

                        map.moveCamera(CameraUpdateFactory.newLatLngZoom(STARTING_POINT, 5));
                        map.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);

                }

        }

Penso che fin qui sia tutto chiaro:

1 - Carico una mappa;

2 - Ciclo un ArrayList con tutti i conenuti e associo per ogni contenuto un marker.

Bene arriviamo alla mia richiesta o problema:

1 - Dovrei, dopo aver posizionato tutti i Marker nella mappa, poter vedere la mappa a video che visualizzi tutti i Marker creati; ho visto che per questa mia casistica c'è un metodo "newLatLngBounds" di google Maps per centrare/visualizzare tutti i punti e mostrarli a video ma non capisco come integrarlo nel mio codice, o meglio dalle prove che ho fatto l'applicazione va in errore!

2 - La seconda problematica è che dovrei associare, non in maniera statica, la proprietà icon del Marker con l'immagine recuperata dal mio ArrayList (in questo caso è un url contenente tale immagine)... però non è tutto poiché l'immagine è sovrapposta o racchiusa all'interno di un mio pin.png -> in questo caso ho visto l'utilizzo dell'"InfoWindowAdapter" ma non è quello che vorrei! poiché quest'ultimo crea la schermata di informazioni sul marker con all'interno il mio layout personalizzato, per meglio rendere l'idea vi mostro il codice che ho provato:

Codice (Java): [Seleziona]
        private class CustomInfoWindowAdapter implements InfoWindowAdapter {

                private View view;

                public CustomInfoWindowAdapter() {
                        view = getLayoutInflater().inflate(R.layout.custom_pin, null);
                }

                @Override
                public View getInfoContents(Marker marker) {
                        if (MapActivity.this.marker != null
                                        && MapActivity.this.marker.isInfoWindowShown()) {
                                MapActivity.this.marker.hideInfoWindow();
                                MapActivity.this.marker.showInfoWindow();
                        }
                        return null;
                }

                @Override
                public View getInfoWindow(final Marker marker) {
                        MapActivity.this.marker = marker;

                        String url = null;

                        if (marker.getId() != null && markers != null && markers.size() > 0) {
                                if (markers.get(marker.getId()) != null
                                                && markers.get(marker.getId()) != null) {
                                        url = markers.get(marker.getId());
                                }
                        }

                        final ImageView image = ((ImageView) view.findViewById(R.id.badge));

                        if (url != null && !url.equalsIgnoreCase("null")
                                        && !url.equalsIgnoreCase("")) {
                                ImageLoader.getInstance().displayImage(url, image);
                        } else {
                                image.setImageResource(R.drawable.ic_launcher);
                        }

                        return view;
                }

        }

        private void initWidget() {
                txtHeader = (TextView) findViewById(id.txtHeaderMenu);

                if (Commons.categoriesList != null) {
                        txtHeader.setText(Commons.categoriesList.get(Commons.cat_id)
                                        .getName());
                }

        }

Ho utilizzato la library esterna universalimageloader per la visualizzazione delle immagini. Il tutto funziona... ma non è quello che voglio poiché sono i marker che devono assumere questo effetto.

Ringrazio in anticipo per la collaborazione

Attendo un vostro suggerimento....