Autore Topic: View "fumetto" all'onTap dei marker su mappe  (Letto 1621 volte)

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
View "fumetto" all'onTap dei marker su mappe
« il: 27 Giugno 2012, 09:06:39 CEST »
0
Ciao,
è la prima volta che lavoro con mappe. Sono riuscito ad implementarle correttamente anche con i marker per la posizione. Ora però vorrei che al "onTap()" mi aprisse un fumetto con dentro i dettagli, come QUESTO esempio...ma non ho trovato aiuti sul web.

Offline UmbySlipKnot

  • Nuovo arrivato
  • *
  • Post: 46
  • Respect: 0
    • Mostra profilo
Re:View "fumetto" all'onTap dei marker su mappe
« Risposta #1 il: 09 Luglio 2012, 09:47:25 CEST »
0
Anch'io sto cercando un esempio per implementare questa funzionalità

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:View "fumetto" all'onTap dei marker su mappe
« Risposta #2 il: 09 Luglio 2012, 09:53:15 CEST »
0
Provate a dare un occhio a questa libreria:

https://github.com/jgilfelt/android-mapviewballoons

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:View "fumetto" all'onTap dei marker su mappe
« Risposta #3 il: 09 Luglio 2012, 10:14:25 CEST »
0
Alla fine ho trovato un altro modo. Inizialmente creo una View con un layout ben definito:

Codice (Java): [Seleziona]
View popUp = getLayoutInflater().inflate(R.layout.map_popup, map, false);
Poi ho trovato che c'è il LayoutParams adatto a questo scopo:

Codice (Java): [Seleziona]
MapView map = (MapView) findViewById(R.id.mapview);  
MapView.LayoutParams mapParams = new MapView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT,
                        <geopoint>,
                        <x offset if required>,
                        <y offset like pinHeight>,
                        MapView.LayoutParams.BOTTOM_CENTER);
map.addView(popUp, mapParams);

Offline UmbySlipKnot

  • Nuovo arrivato
  • *
  • Post: 46
  • Respect: 0
    • Mostra profilo
Re:View "fumetto" all'onTap dei marker su mappe
« Risposta #4 il: 09 Luglio 2012, 10:26:16 CEST »
0
Provate a dare un occhio a questa libreria:

https://github.com/jgilfelt/android-mapviewballoons

Grazie!
Sto cercando di capire come personalizzare il mio codice, perché questa libreria è sotto copyright

Offline UmbySlipKnot

  • Nuovo arrivato
  • *
  • Post: 46
  • Respect: 0
    • Mostra profilo
Re:View "fumetto" all'onTap dei marker su mappe
« Risposta #5 il: 09 Luglio 2012, 10:29:41 CEST »
0
Alla fine ho trovato un altro modo. Inizialmente creo una View con un layout ben definito:

Codice (Java): [Seleziona]
View popUp = getLayoutInflater().inflate(R.layout.map_popup, map, false);
Poi ho trovato che c'è il LayoutParams adatto a questo scopo:

Codice (Java): [Seleziona]
MapView map = (MapView) findViewById(R.id.mapview);  
MapView.LayoutParams mapParams = new MapView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT,
                        <geopoint>,
                        <x offset if required>,
                        <y offset like pinHeight>,
                        MapView.LayoutParams.BOTTOM_CENTER);
map.addView(popUp, mapParams);

Ora provo. Questo codice dove va scritto?
« Ultima modifica: 09 Luglio 2012, 10:50:28 CEST da UmbySlipKnot »

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:View "fumetto" all'onTap dei marker su mappe
« Risposta #6 il: 09 Luglio 2012, 11:07:38 CEST »
+1
Ora provo. Questo codice dove va scritto?

Nell'activity dove crei la MapView. Se non riesci, nei prossimi giorni ti posto la mia Activity.
EDIT...aspè che ho un dubbio....dammi qualche minuto.
« Ultima modifica: 09 Luglio 2012, 11:10:45 CEST da emaborsa »

Offline UmbySlipKnot

  • Nuovo arrivato
  • *
  • Post: 46
  • Respect: 0
    • Mostra profilo
Re:View "fumetto" all'onTap dei marker su mappe
« Risposta #7 il: 09 Luglio 2012, 11:14:53 CEST »
0
Nell'activity dove crei la MapView. Se non riesci, nei prossimi giorni ti posto la mia Activity.
EDIT...aspè che ho un dubbio....dammi qualche minuto.

Sono abbastanza in alto mare, non riesco bene a capire come strutturare il codice  o_O

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:View "fumetto" all'onTap dei marker su mappe
« Risposta #8 il: 09 Luglio 2012, 11:39:53 CEST »
+2
Allora, ho controllato. La MapView devi crearla nella tua MapActivity...con:

Codice (Java): [Seleziona]
MapView mapView = (MapView) findViewById(R.id.mapView);
che non è altro che creare una view da un xml definito.
Per mettere sei segnalini (marker) sulla mappa devi estedere la classe ItemizedOverlay<OverlayItem> e definire un pò di cose, ti posto il mio:

Codice (Java): [Seleziona]
package com.emaborsa.core;

import java.util.ArrayList;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.emaborsa.R;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {

        private ArrayList<OverlayItem> mOverlays;
        private MapView mapView;
        private View popUp;
        private Context context;

        public MyItemizedOverlay(Context ctx, LayoutInflater inflater, MapView mapView,
                        Drawable defaultMarker) {
                super(boundCenter(defaultMarker));
                mOverlays = new ArrayList<OverlayItem>();
                this.mapView = mapView;
                this.context = ctx;
                this.popUp = inflater.inflate(R.layout.popup, mapView, false);
        }

        public void addOverlay(OverlayItem overlay) {
                mOverlays.add(overlay);
                populate();
        }

        @Override
        protected OverlayItem createItem(int index) {
                return mOverlays.get(index);
        }

        @Override
        public int size() {
                return mOverlays.size();
        }

        @Override
        protected boolean onTap(int index) {
                mapView.removeAllViews();
                MapView.LayoutParams mapParams = new MapView.LayoutParams(
                                ViewGroup.LayoutParams.WRAP_CONTENT,
                                ViewGroup.LayoutParams.WRAP_CONTENT, mOverlays.get(index)
                                                .getPoint(), MapView.LayoutParams.BOTTOM_CENTER);
                mapView.addView(popUp, mapParams);
                return super.onTap(index);
        }

        @Override
        public boolean onTap(GeoPoint p, MapView mapView) {
                mapView.removeAllViews();
                return super.onTap(p, mapView);
        }

}

il primo onTap fa appunto apparire il nostro popup, che è sempre un XML. Il secondo onTap lo ho scritto in modo da non avere più di un popup aperto, cioè se clicchi sulla mappa, viene chiuso il popup precedentemente aperto.

Offline UmbySlipKnot

  • Nuovo arrivato
  • *
  • Post: 46
  • Respect: 0
    • Mostra profilo
Re:View "fumetto" all'onTap dei marker su mappe
« Risposta #9 il: 09 Luglio 2012, 15:57:01 CEST »
0
Allora, ho controllato. La MapView devi crearla nella tua MapActivity...con:

Codice (Java): [Seleziona]
MapView mapView = (MapView) findViewById(R.id.mapView);...

Nella MapActivity come hai istanziato la classe MyItemizedOverlay? Non so bene cosa mettere nei parametri del costruttore..
« Ultima modifica: 09 Luglio 2012, 16:02:47 CEST da UmbySlipKnot »

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:View "fumetto" all'onTap dei marker su mappe
« Risposta #10 il: 09 Luglio 2012, 16:54:43 CEST »
+1
Nella MapActivity come hai istanziato la classe MyItemizedOverlay? Non so bene cosa mettere nei parametri del costruttore..

Come vedi dal costruttore:

Codice (Java): [Seleziona]
 public MyItemizedOverlay(Context ctx, LayoutInflater inflater, MapView mapView,
                        Drawable defaultMarker) {
...
}

Il context ti servirà se vuoi personalizzare i popup, il layoutinflater per creare il layout, la mapview e il marker dovrebbero essere chiari.
Comunque:

Codice (Java): [Seleziona]
MyItemizedOverlay itemizedOverlay = new MyItemizedOverlay(getApplicationContext(), getLayoutInflater(), mapView, drawable);