Autore Topic: disegnare cerchio sulla mappa  (Letto 5289 volte)

Offline gix

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Nexus S e Asus TF-101
  • Sistema operativo:
    Windows xp
disegnare cerchio sulla mappa
« il: 20 Aprile 2011, 11:41:21 CEST »
0
Salve a tutti ho un problema, penso non sia troppo complicato ma non riesco a risolverlo.
Dunque vorrei disegnare un cerchio in un Geopoint prestabilito, ho già provato in questo modo ma se faccio zoom out/in la dimensione del cerchio rimane sempre la stessa indipendentemente del livello dello zoom.
Codice (Java): [Seleziona]
public class MapOverlay extends ItemizedOverlay<OverlayItem> {

@Override
        public void draw(Canvas canvas , MapView mapView , boolean      shadow) {
       
       
                        Paint paint3 = new Paint();
                        paint3.setDither(true);
                        paint3.setColor(Color.RED);
                        paint3.setStyle(Paint.Style.FILL_AND_STROKE);
                        paint3.setStrokeJoin(Paint.Join.ROUND);
                        paint3.setStrokeCap(Paint.Cap.ROUND);
                        paint3.setStrokeWidth(2);

                        // un punto geografico qualsiasi
                               GeoPoint geoPoint2 = new GeoPoint(44764865, 10309118);
                              Projection projection = mapView.getProjection();
                              Point mapPoint2 = new Point();
                       
                                projection.toPixels(geoPoint2 , mapPoint2);
                                canvas.drawCircle(mapPoint2.x, mapPoint2.y, 10, paint3);       
                                canvas.drawPath(path, paint3);
                                super.draw(canvas,mapView,shadow);
}
}



Io vorrei che il cerchio copra sempre una stessa area geografica e quindi locgicamente ingrandirsi quando si fa zoom in e rimpicciolirsi con zoom out.
Datemi una mano per piacere  :'(  :-)
Vi ringrazio anticipatamente
« Ultima modifica: 20 Aprile 2011, 11:51:34 CEST da gix »

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:disegnare cerchio sulla mappa
« Risposta #1 il: 20 Aprile 2011, 11:49:21 CEST »
+1
Codice (Java): [Seleziona]
canvas.drawCircle(mapPoint2.x, mapPoint2.y, 10 * mapView.getZoomLevel(), paint3);  
Il raggio del cerchio è proporzionale al livello di zoom.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline gix

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Nexus S e Asus TF-101
  • Sistema operativo:
    Windows xp
Re:disegnare cerchio sulla mappa
« Risposta #2 il: 20 Aprile 2011, 12:12:38 CEST »
0
Grazie mille!!!..
Potrei farti un altra domanda? E se volessi disegnare un cerchio di un raggio di  un Km? come posso fare? E sempre in modo che il cerchio mantenga sempre il raggio di un Km indipendentemente dallo zoom.

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:disegnare cerchio sulla mappa
« Risposta #3 il: 20 Aprile 2011, 12:16:30 CEST »
0
quel 10 che hai nella formula, devi fare in modo che diventi il tuo km.
devi farlo ad occhio, credo...non saprei come aiutarti.

p.s.: se il mio recente post ti è stato utile, clicca su thanks.

^_^
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:disegnare cerchio sulla mappa
« Risposta #4 il: 20 Aprile 2011, 15:35:12 CEST »
+3
Io ho fatto una cosa del genere in un progetto dell'uni, ti posto il codice però adattalo un po' tu :P
Codice (Java): [Seleziona]
        class CircleOverlay extends Overlay {

                @Override
                public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
                                long when) {

                        super.draw(canvas, mapView, shadow);
                        Paint paint = new Paint();

                        Projection projection = mapView.getProjection();
                        Point point = new Point();

                        GeoPoint myLocPoint = new GeoPoint(
                                        (int) (event.getLatitude() * 1E6), (int) (event
                                                        .getLongitude() * 1E6));

                        projection.toPixels(myLocPoint, point);

                        // Calcoliamo il raggio della circonferenza da disegnare...
                        float radius = (float) (projection.metersToEquatorPixels(meters) * (1 / Math
                                        .cos(Math.toRadians(event.getLatitude()))));

                        // Disegnamo la circonferenza
                        paint.setStrokeWidth(3);
                        paint.setARGB(255, 255, 255, 255);
                        paint.setStyle(Paint.Style.STROKE);
                        paint.setColor(Color.GREEN);
                        paint.setStyle(Style.STROKE);

                        canvas.drawCircle(point.x, point.y, radius, paint);

                        return true;

                }

        }

Offline gix

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Nexus S e Asus TF-101
  • Sistema operativo:
    Windows xp
Re:disegnare cerchio sulla mappa
« Risposta #5 il: 20 Aprile 2011, 19:45:09 CEST »
0
Grazie 1000!!!! Devo fare qualche prova un po' più ferrea xo sembra funzionare alla perfezione!!!!
Grazie davvero :-)

Offline Improving

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Google+
    • lorenz522
    • Mostra profilo
  • Dispositivo Android:
    Android HTC Desire Z
  • Play Store ID:
    Lorenzo Del Soldato
  • Sistema operativo:
    Ubuntu Linux 11.04
Re:disegnare cerchio sulla mappa
« Risposta #6 il: 09 Maggio 2011, 20:00:39 CEST »
0
Ricky... non sai quanto ho cercato questa cosa

che Dio ti benedica!  :D

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:disegnare cerchio sulla mappa
« Risposta #7 il: 09 Maggio 2011, 20:05:52 CEST »
0
Ricky... non sai quanto ho cercato questa cosa

che Dio ti benedica!  :D

Anche io ai tempi mi sono sbattuto parecchio :P

Offline didodede

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung i5500
  • Sistema operativo:
    Windows 7
Re:disegnare cerchio sulla mappa
« Risposta #8 il: 13 Maggio 2011, 01:36:25 CEST »
0
gix puoi postare il codice completo?serve anche a me ma non mi funziona...Grazie!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:disegnare cerchio sulla mappa
« Risposta #9 il: 13 Maggio 2011, 06:51:08 CEST »
0
gix puoi postare il codice completo?serve anche a me ma non mi funziona...Grazie!

Non ti serve il codice completo.
Basta che ti personalizzi quello che ho postato e lo aggiungi.
Nel caso hai problemi apri un topic dove posti logcat e codice ;)

Offline didodede

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung i5500
  • Sistema operativo:
    Windows 7
Re:disegnare cerchio sulla mappa
« Risposta #10 il: 13 Maggio 2011, 10:33:57 CEST »
0
ok grazie...appena possibile lo faccio!!!

Offline nowire75

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows XP, Linux
Re:disegnare cerchio sulla mappa
« Risposta #11 il: 08 Novembre 2011, 15:00:09 CET »
0
Ciao e scusatemi se riapro il post dopo molto tempo.
Sto da poco lavorando con le mappe e vorrei anche io metterci dei disegni su. Due cose non mi sono chiare del codice che hai postato:

che tipo di oggetto è "event" e da dove viene?
e la variabile meters sono i metri che vuoi impostare come raggio convertiti in pixel in base alla scala giusto?

Grazie

Codice (Java): [Seleziona]
[CUT]
                        GeoPoint myLocPoint = new GeoPoint(
                                        (int) (event.getLatitude() * 1E6), (int) (event
                                                        .getLongitude() * 1E6));

                        projection.toPixels(myLocPoint, point);

                        // Calcoliamo il raggio della circonferenza da disegnare...
                        float radius = (float) (projection.metersToEquatorPixels(meters) * (1 / Math
                                        .cos(Math.toRadians(event.getLatitude()))));

[CUT]

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:disegnare cerchio sulla mappa
« Risposta #12 il: 08 Novembre 2011, 15:53:55 CET »
0
che tipo di oggetto è "event" e da dove viene?

Event è un oggetto definito da me che ha vari attributi, tra cui latitudine e longitudine. Modifica il codice come serve a te, dovrebbe essere chiaro dove devi tirare via event e inserire le tue coordinate.

Citazione
e la variabile meters sono i metri che vuoi impostare come raggio convertiti in pixel in base alla scala giusto?

Si, esatto :)

Offline nowire75

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows XP, Linux
Re:disegnare cerchio sulla mappa
« Risposta #13 il: 08 Novembre 2011, 15:58:21 CET »
0
ok perfetto grazie!

Offline matpil

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi4c
  • Sistema operativo:
    Linux Mint 17.2 with Mate
Re:disegnare cerchio sulla mappa
« Risposta #14 il: 17 Luglio 2012, 16:25:24 CEST »
0
ora una cosa più difficile :)
E' possibile in qualche modo vedere se un punto (coordinate provenienti dal GPS) stiano dentro al cerchio disegnato?

C'è modo di farlo?

grazie!
App pubblicate sul Market :Ticket counter