Autore Topic: Inserire Marker cliccabili  (Letto 799 volte)

Offline Guccio92

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7 64bit/ Mavericks 10.9
Inserire Marker cliccabili
« il: 22 Giugno 2015, 09:12:33 CEST »
0
Salve a tutti a ragazzi, ho provato in svariati modi a creare i marker e renderli cliccabili, ci sono riuscito ma solamente che non riesco a dargli un id per poter differenziare il click di un marker dall'altro perché io ne avrei un bel po' e per ognuno di questi dovrei far startare un activity diversa. Vi posto il mio codice.

Codice (Java): [Seleziona]
 pulsante2.setOnClickListener(new View.OnClickListener() {                 -----dal click di un tasto faccio comparire i marker------
            @Override
            public void onClick(View v) {


                mMap.addMarker(new MarkerOptions().position(LOCATION_ACI).title("ACI DI AULLA"));   -----cliccando su questo si apre l'activity----
                {
                mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                    @Override
                    public void onInfoWindowClick(Marker marker) {
                        Intent intent = new Intent(MapsActivity.this,MainActivity.class);
                        startActivity(intent);


                    }
                });
                }


                        mMap.addMarker(new MarkerOptions().position(new LatLng(12, 12)).title("Marker1"));         -----ma anche con questi-------
                mMap.addMarker(new MarkerOptions().position(new LatLng(14, 14)).title("Marker2"));                -----ma anche con questi-------
                mMap.addMarker(new MarkerOptions().position(new LatLng(16, 16)).title("Marker23"));               -----ma anche con questi-------
                mMap.addMarker(new MarkerOptions().position(new LatLng(18, 18)).title("Marker32"));               -----ma anche con questi-------

            }

        });
« Ultima modifica: 22 Giugno 2015, 12:37:21 CEST da Nicola_D »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:INSERIRE MARKER E RENDERLI CLICCABILI.
« Risposta #1 il: 22 Giugno 2015, 09:55:39 CEST »
+1
puoi dargli un title "stringa" che puoi poi prendere e confrontare
oppure
puoi prendere l'id autoassegnato ( https://developers.google.com/android/reference/com/google/android/gms/maps/model/Marker#getId() )
oppure, come consigliato nella documentazione ufficiale: https://developers.google.com/maps/documentation/android/markerhttps://developers.google.com/maps/documentation/android/marker
puoi tenerti da una parte i riferimenti ai marker che hai creato (che ti vengono restituiti quando fai map.addMarker ) e confrontare l'oggetto che ricevi nella callback di click della infoWindow.

ti consiglio caldamente di leggerti la documentazione, è piena di esempi e spunti per capire come funziona e come sfruttare GoogleMap
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Guccio92

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7 64bit/ Mavericks 10.9
Re:INSERIRE MARKER E RENDERLI CLICCABILI.
« Risposta #2 il: 22 Giugno 2015, 10:04:05 CEST »
0
Ti ringrazio nicola,
il come faccio ad assegnargli un title?? se riusciresti te a postarmi un piccolo pezzo di codice...
Anche perché sinceramente riesco a capire meglio un pezzo di codice gia pronto che la documentazione. Anche perché e molto basilare la mia app, e cerco sempre di semplificare il più possibile.
Io ho provato a fare cosi (ma prende l'ultimo inserito e lo fa per tutti.)

Codice (Java): [Seleziona]
 pulsante2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                mMap.addMarker(new MarkerOptions().position(LOCATION_ACI).title("ACI DI AULLA"));
                {
                    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick(Marker marker) {
                            Intent intent = new Intent(MapsActivity.this,MainActivity.class);
                            startActivity(intent);


                        }
                    });
                }


                mMap.addMarker(new MarkerOptions().position(new LatLng(12, 12)).title("Marker1"));

                {
                    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick(Marker marker) {
                            Intent intent = new Intent(MapsActivity.this,Eventi.class);
                            startActivity(intent);


                        }
                    });
                }



                mMap.addMarker(new MarkerOptions().position(new LatLng(14, 14)).title("Marker2"));

                {
                    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick(Marker marker) {
                            Intent intent = new Intent(MapsActivity.this,Evento1.class);
                            startActivity(intent);


                        }
                    });
                }

                mMap.addMarker(new MarkerOptions().position(new LatLng(16, 16)).title("Marker23"));

                {
                    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick(Marker marker) {
                            Intent intent = new Intent(MapsActivity.this,Evento11.class);
                            startActivity(intent);


                        }
                    });
                }

                mMap.addMarker(new MarkerOptions().position(new LatLng(18, 18)).title("Marker32"));

                {
                    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick(Marker marker) {
                            Intent intent = new Intent(MapsActivity.this,Eventi.class);            ----tutti i marker rimandano a questa activity---
                            startActivity(intent);


                        }
                    });

[/
code]

Post unito: 22 Giugno 2015, 11:12:38 CEST
Scusate ragazzi ma avrei veramente bisogno di questo aiuto.
Grazie mille in anticipo.
« Ultima modifica: 22 Giugno 2015, 11:12:38 CEST da Guccio92, Reason: Merged DoublePost »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:INSERIRE MARKER E RENDERLI CLICCABILI.
« Risposta #3 il: 22 Giugno 2015, 12:02:48 CEST »
+1
Codice: [Seleziona]
[quote author=Guccio92 link=topic=16621.msg82826#msg82826 date=1434960245]
Ti ringrazio nicola,
il come faccio ad assegnargli un title?? se riusciresti te a postarmi un piccolo pezzo di codice...
[b]Anche perché sinceramente riesco a capire meglio un pezzo di codice gia pronto che la documentazione.[/b] Anche perché e molto basilare la mia app, e cerco sempre di semplificare il più possibile.
[/quote]

MALE! Se vuoi sviluppare, la prima cosa che devi imparare è a destreggiarti nella documentazione, a sfruttarla e ad abituarti a leggerla prima di scrivere codice a caso.

Basilare o meno l'app, quando si scrive il codice bisogna sapere cosa si scrive.
Mi chiedi come fare ad impostare un title, ma l'hai già fatto sui tuoi marker!
Dopodiche tu usi il metodo:
https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap#setOnInfoWindowClickListener(com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener)

piu volte. Essendo un metodo set (oltre che dalla documentazione in cui è spiegato), puoi capire che il listener è uno e sempre quello. Se vuoi differenziare il tuo funzionamento in base al marker, ti devi leggere il marker che ricevi come parametro e reagire di conseguenza.
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Guccio92

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7 64bit/ Mavericks 10.9
Re:INSERIRE MARKER E RENDERLI CLICCABILI.
« Risposta #4 il: 22 Giugno 2015, 12:08:20 CEST »
0
Ti ringrazio dei consigli.

Pero vorrei veramente quel piccolo pezzo di codice, perché ho fretta veramente fretta. Se riesci anche magari per domani che è il mio ultimo pezzo mancante. Scusa se ti richiedo ancora cosi ma quando si lavora con fretta non posso fare altro.

Grazie Ancora.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:INSERIRE MARKER E RENDERLI CLICCABILI.
« Risposta #5 il: 22 Giugno 2015, 12:29:18 CEST »
+1
Quando tu fai .title gli setti un titolo. Credo che a spanne esista anche .gegetTitle ()

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:INSERIRE MARKER E RENDERLI CLICCABILI.
« Risposta #6 il: 22 Giugno 2015, 12:36:57 CEST »
+1
Ti ringrazio dei consigli.

Pero vorrei veramente quel piccolo pezzo di codice, perché ho fretta veramente fretta. Se riesci anche magari per domani che è il mio ultimo pezzo mancante. Scusa se ti richiedo ancora cosi ma quando si lavora con fretta non posso fare altro.

Grazie Ancora.
Quando si ha fretta i motivi possono essere:
1- Ti sei preso tardi
2- Hai promesso qualcosa che non sapevi fare
3- Hai promesso qualcosa in meno tempo di quello che effettivamente occupi
4- Ti hanno dato una scadenza che non puoi rispettare perchè troppo ferrea
5- Non hai voglia di imparare
6- ... tanti altri...

In qualsiasi caso tu ti trovi hai poche alternative, o impari mettendoti sotto (cosi sai anche fare qualcosa in piu), o chiedi ad altri.

Se non vuoi scegliere la prima opzione (che per quello che devi fare, non ti porta via mesi, e neanche giorni, ma un paio d'ore di lettura della documentazione), puoi sempre chiedere su stack overflow se qualcuno ti scrive il codice gratis (magari spiegando bene cosa devi fare, non a spanne come qui), oppure puoi pagare qualcuno per farlo al posto tuo (ad esempio, googla "rent a coder").

Scrivere post in maiuscolo e "Elemosinare codice (per domani) perchè hai fretta" non ti aiuta sicuramente.

Detto questo, i miei consigli te li ho dati. Saluti
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline LinkOut

  • Utente normale
  • ***
  • Post: 265
  • Respect: +36
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Inserire Marker cliccabili
« Risposta #7 il: 22 Giugno 2015, 14:09:01 CEST »
+1
Se capisci meglio gli esempi scritti tramite codice puoi sempre far riferimento agli esempi che trovi nell'SDK, esiste appunto anche quello delle mappe di google.

Saluti.

Offline Guccio92

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7 64bit/ Mavericks 10.9
Re:Inserire Marker cliccabili
« Risposta #8 il: 23 Giugno 2015, 08:12:57 CEST »
0
Grazie a tutti non serve comunque diventare scortesi. Chiedere è lecito ognuno può chiedere cio che vuole con educazione (non elemosinando come dici te Nicola), comunque hai ragione ma io non è che promesso niente a nessuno. Ma se tutti i giorni e dico tutti i giorni ti viene detto (a che punto siamo?). Magari al lunedi mattina alle 8:35 che sabato e domenica non si lavora (Non si lavora perché sono un dipendente e non mi viene chiesto di lavorare anche a casa), e poi 4 ore al giorno occupandoti anche di altro. Scusate lo sfogo mattutino.

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Inserire Marker cliccabili
« Risposta #9 il: 23 Giugno 2015, 08:59:49 CEST »
0
Grazie a tutti non serve comunque diventare scortesi. Chiedere è lecito ognuno può chiedere cio che vuole con educazione (non elemosinando come dici te Nicola), comunque hai ragione ma io non è che promesso niente a nessuno. Ma se tutti i giorni e dico tutti i giorni ti viene detto (a che punto siamo?). Magari al lunedi mattina alle 8:35 che sabato e domenica non si lavora (Non si lavora perché sono un dipendente e non mi viene chiesto di lavorare anche a casa), e poi 4 ore al giorno occupandoti anche di altro. Scusate lo sfogo mattutino.
benvenuto nel mondo lavorativo da dipendente... ieri ho finito alle 22 :D
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Guccio92

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7 64bit/ Mavericks 10.9
Re:Inserire Marker cliccabili
« Risposta #10 il: 23 Giugno 2015, 09:06:00 CEST »
0
Lascia stare io avvolte rientro in ufficio anche alle 23, fortunatemente solo per un paio di minuti.
Se ti parlo così è solamente perché sono un ragazzo giovane che cerca di apprendere il più in fretta possibile (naturalmente nel modo sbagliato).

Ti volevo chiedere che non so come poter impostare il codice. Ho il mio marker
Codice (Java): [Seleziona]
mMap.addMarker(new MarkerOptions().position(new LatLng(14, 14)).title("Marker2")); come posso fare ad assegnarli un id o qualsiasi altra cosa per poterlo distinguere per poi utilizzare questa activity
Codice (Java): [Seleziona]
 {
                    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick(Marker marker) {
                            Intent intent = new Intent(MapsActivity.this, Evento1.class);
                            startActivity(intent);


                        }

Offline LinkOut

  • Utente normale
  • ***
  • Post: 265
  • Respect: +36
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Inserire Marker cliccabili
« Risposta #11 il: 23 Giugno 2015, 09:43:20 CEST »
+1
android - Getting a map marker by its ID in Google Maps v2 - Stack Overflow

Prova una cosa del genere:

Codice (Java): [Seleziona]
mMap.addMarker(new MarkerOptions().position(new LatLng(14, 14)).title("pippo"));
Codice (Java): [Seleziona]
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                @Override
                public void onInfoWindowClick(Marker marker) {
                    String test = marker.getTitle();
                    if("pippo".equals(test)){
                        Intent intent = new Intent(MapsActivity.this, Evento1.class);
                        startActivity(intent);
                    }
                }

Offline Guccio92

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7 64bit/ Mavericks 10.9
Re:Inserire Marker cliccabili
« Risposta #12 il: 23 Giugno 2015, 10:21:01 CEST »
0
Ho provato come mi hai scritto te e intanto ti ringrazio ti posto il codice ho fatto la prova con 2 marker

Codice (Java): [Seleziona]
mMap.addMarker(new MarkerOptions().position(new LatLng(16, 16)).title("prova"));

                {
                    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick(Marker marker) {
                            String test1 = marker.getTitle();
                            if("prova".equals(test1)){
                                Intent intent = new Intent(MapsActivity.this, Eventi.class);
                                startActivity(intent);
                            }


                        }
                    });
                }



                mMap.addMarker(new MarkerOptions().position(new LatLng(14, 14)).title("ciao"));

                {
                    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick(Marker marker) {
                            String test = marker.getTitle();
                            if("ciao".equals(test)){
                                Intent intent = new Intent(MapsActivity.this, Evento11.class);
                                startActivity(intent);
                            }


                        }
                    });
                }

Sfortunatamente mi funziona solamente per uno dei due, l'altra activity non va.

Offline LinkOut

  • Utente normale
  • ***
  • Post: 265
  • Respect: +36
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Inserire Marker cliccabili
« Risposta #13 il: 23 Giugno 2015, 10:47:23 CEST »
+1
Il tuo approccio è sbagliato, vedi se questo ti aiuta a capire:

Codice (Java): [Seleziona]
 mMap.addMarker(new MarkerOptions().position(new LatLng(14, 14)).title("ciao"));
 mMap.addMarker(new MarkerOptions().position(new LatLng(16, 16)).title("prova"));

 
 mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
            @Override
            public void onInfoWindowClick(Marker marker) {
                String markerName = marker.getTitle();
                                if("ciao".equals(markerName)) {
                                        Toast.makeText(this,  "Tappato marker: " + markerName, Toast.LENGTH_LONG).show();
                                }else if("prova".equals(markerName)){
                                        Toast.makeText(this, "Tappato marker: " + markerName, Toast.LENGTH_LONG).show();
                                }
            }
        });

Offline Guccio92

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7 64bit/ Mavericks 10.9
Re:Inserire Marker cliccabili
« Risposta #14 il: 23 Giugno 2015, 10:51:40 CEST »
0
Ti ringrazio per il codice ma se avessi ad esempio 100 marker è sempre la solita cosa? e poi ti volevo chiedere anzi che toast.maketext, posso far partire la mia activity!?