Autore Topic: Assegnare InfoWindowAdapter (Maps) un Marker con foto,titolo,snippet,RatiBar  (Letto 823 volte)

Offline aury

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Experia Mini Pro
  • Sistema operativo:
    Windows 7
Salve ragazzi, sto creando un app che sfrutta la geolocalizzazione.

La mia idea è quella che quando lascio premuto lo schermo mi si apre una schermata di AlertDialog che mi permetta di inserire
-una foto (vorrei aprire la mia galleria delle immagini e scegliere quale immagine.jpg impostare come InfoWindow)
-inserire un tiolo del mio marker nella mia InfoWindow
-inserire lo snippet del mio marker nella mia InfoWindow
-inserire un ratingBar sempre nella mia InfoWindow

tutto lo vorrei memorizzare in un DBMS SQLite.

Quando lascio premuto lo schermo la mia applicazione riesce:
-aprire la finestra di alertDialog
-inserire title e snippet e memorizzarli nel SQLite

non riesco a far funzionare il pulsante inserito nell' alertDialog, ovvero una volta spinto mi faccia aprire la galleria delle mie foto.jpg salvate sulla mia sdcard e scegliere quella che voglio associare alla InfoWindow di ogni marker (una foto diversa per ogni InfoWindow di ogni marker),
inoltre non riesco a memorizzare nella InfoWindow di ogni marker il valore del RatingBar che ho assegnato nella finestra di alertDialog che mi compare quando devo creare un marker (un valore diverso per ogni marker).

Mi potreste aiutare ? Ho delle scadenze da rispettare....

Qualcuno di voi ha mai realizzato un'applicazione del genere?

Vi ringrazio in anticipo

Offline fabio.dnaweb

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung 19100
  • Sistema operativo:
    Windows 7
Re:Assegnare InfoWindowAdapter (Maps) un Marker con foto,titolo,snippet,RatiBar
« Risposta #1 il: 05 Febbraio 2014, 11:33:31 CET »
0
Ciao,

purtroppo le informazioni che ci hai fornito non sono complete ed in più potrebbe aiutarti il fatto di inserire il codice che hai scritto in modo da capire quali sono gli aspetti tecnici sul quale sei bloccato.

Ad ogni modo devi scindere le tue richieste in diverse sezioni:

1 - Utilizzare DB SQL con operazioni CRUD per la gestione delle informazioni;

2 - Utilizzare la mappa di Google per creare una infoWindow personalizzata;

3 - Gestire i permessi per la lettura di informazioni (in questo caso immagini) dal device;

Partendo dal punto 1 a quello che ho capito la parte di CRUD è già implementata quindi il blocco che hai può essere risolto solo come ti ho suggerito sopra, postando il codice che hai implementato.

Per il 2 punto invece ti suggerisco di dare un'occhiata a questa guida:
http://androidfreakers.blogspot.it/2013/08/display-custom-info-window-with.html

Trovi:
- L'utilizzo di un Layout Custom (che è quello che serve per il tuo caso);
- La creazione di un CustomInfoWindowAdapter;

Per il 3 punto invece qui c'è una richiesta simile alla tua:
http://stackoverflow.com/questions/14135764/store-image-to-sd-card

Quello che posso suggerirti, per esperienza personale, prima magari di accettare lavori preparati un piano didattico sulle cose da studiare/progettare e poi definisci i tempi di realizzazione, così la prossima volta non ti trovi impreparato su alcuni punti.  ;-)

Buon Lavoro

Offline aury

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Experia Mini Pro
  • Sistema operativo:
    Windows 7
Re:Assegnare InfoWindowAdapter (Maps) un Marker con foto,titolo,snippet,RatiBar
« Risposta #2 il: 05 Febbraio 2014, 12:32:33 CET »
0
Vorrei modificare questo codice in modo tale che una volta che premo il pulsante Button che ho inserito nella finestra di AlertDialog mi apra la galleria delle foto.jpg salvate sulla mia sdcard e me la imposti come foto nel marker.

Codice (Java): [Seleziona]
googlemap.setInfoWindowAdapter(new InfoWindowAdapter() {
           
                   @Override
                   public View getInfoWindow(Marker arg0) {
                       
                       return null;
                   }
                 
                   @Override
                   public View getInfoContents(Marker marker) {
                           View myContentsView1 = getLayoutInflater().inflate(R.layout.marker_layout2, null);                    
                     
                       
                       TextView tvTitle = ((TextView)myContentsView1.findViewById(R.id.marker_titolo_inserito));                       
                           tvTitle.setText(marker.getTitle());
                           TextView tvSnippet = ((TextView)myContentsView1.findViewById(R.id.marker_informazioni_inserito));
                           tvSnippet.setText(marker.getSnippet());
                       
                   
                         
                       return myContentsView1;
                   }
               });

                googlemap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {

                                // quando clicco sul palloncino (titolo e snippet) il marker viene eliminato
                                        public void onInfoWindowClick(Marker marker) {
                                        //      milano.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.map_menu));
                                                marker.remove();
                                                       
                                                data.deleteMarker(new MyMarkerObj(marker.getTitle(),
                                                                marker.getSnippet(),
                                                                marker.getPosition().latitude + " "
                                                                                + marker.getPosition().longitude));
                                                                       
                                               
                                        }
                                });
               
               
                googlemap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {

                                        public void onMapLongClick(final LatLng latlng) {
                                                LayoutInflater li = LayoutInflater.from(context);
                                                final View v = li.inflate(R.layout.marker_layout, null);
                                               
                                               
                                                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                                                builder.setView(v);
                                               
                                                builder.setCancelable(false);

                                                builder.setPositiveButton("Inserisci",
                                                                new DialogInterface.OnClickListener() {

                                                                        public void onClick(DialogInterface dialog,
                                                                                        int which) {
                                                                                EditText title = (EditText) v
                                                                                                .findViewById(R.id.marker_titolo_inserito);
                                                                                EditText snippet = (EditText) v
                                                                                                .findViewById(R.id.marker_informazioni_inserito);
                                                                               
                                                                                if(title.length() > 0 && snippet.length() > 0) {
                                                                                       
                                                                                         milano =       googlemap.addMarker(new MarkerOptions()
                                                                                                .title(title.getText()
                                                                                                                .toString())
                                                                                                .snippet(
                                                                                                                snippet.getText()
                                                                                                                                .toString())
                                                                                                .icon(BitmapDescriptorFactory
                                                                                                                .defaultMarker(BitmapDescriptorFactory.HUE_BLUE))
                                                                                                .position(latlng).draggable(true));
                                                                                String sll = latlng.latitude + " "
                                                                                                + latlng.longitude;
                                                                                data.addMarker(new MyMarkerObj(title
                                                                                                .getText().toString(), snippet
                                                                                                .getText().toString(), sll));
                                                                        }
                                                                }
                                                }      
                                                                );

                                                builder.setNegativeButton("Annulla",
                                                                new DialogInterface.OnClickListener() {

                                                                        public void onClick(DialogInterface dialog,
                                                                                        int which) {
                                                                                dialog.cancel();
                                                                        }
                                                                });

                                                AlertDialog alert = builder.create();
                                                alert.show();

                                        } // chiude il metodo OnMapLongClick
                                });
        }