CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: gianpassa con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 9 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

Aiuto per le google maps!

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Senior Droid L'avatar di zak84


    Registrato dal
    Jan 2011
    Messaggi
    890
    Smartphone
    Google Nexus 5 32GB Black

    Ringraziamenti
    13
    Ringraziato 62 volte in 60 Posts
    Predefinito

    Aiuto per le google maps!

    Ragazzi ho dei problemi con le mappe... ora funzionano ma non riesco ad implementare delle cose che sono quasi essenziali...
    dunque il mio codice è questo:
    codice:
    public class Mappa extends MapActivity {
    	private MapView mapView;
    	double latitudine=0;
    	double longitudine=0;
    	int kilometri=20;
        @Override
        protected boolean isRouteDisplayed() {
            return false;
        }
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.mappa);
            mapView = (MapView) findViewById(R.id.mapview);
            MapController mapController = mapView.getController();
            final MyLocationOverlay myLocationOverlay;
            mapView.setBuiltInZoomControls(true);
            List<Overlay> mapOverlays = mapView.getOverlays();
            Drawable drawable = this.getResources().getDrawable(R.drawable.pin_bioscalin);
            MyOverlays itemizedoverlay = new MyOverlays(drawable, this);
            // milano
            latitudine = 45.464164;
            longitudine = 9.190321;
            GeoPoint mio_point = new GeoPoint((int)(latitudine*1E6), (int)(longitudine*1E6));
            mapController.setCenter(mio_point);
            mapController.animateTo(mio_point);
            // GPS
            LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
            LocationListener mlocListener = new MyLocationListener();
            mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 60000, 0, mlocListener);
            GeoPoint initGeoPoint = mapView.getMapCenter();
            latitudine=(float)(initGeoPoint.getLatitudeE6())/1000000;
            longitudine=(float)(initGeoPoint.getLongitudeE6())/1000000;
            // zoom
            mapController.setZoom(11);
    		// farmacie
            Database_mio db=new Database_mio(this); 
    	    db.openDataBase(); 
    	    Cursor data=db.elenco_negozi_mappa(latitudine,latitudine,kilometri);
    	    data.moveToFirst();
    	    do {
    	        String id_farmacia = data.getString(data
    	                .getColumnIndex("_id"));
    	        String ragione_farmacia = data.getString(data
    	                .getColumnIndex("ragione"));
    	        String indirizzo_farmacia = data.getString(data
    	                .getColumnIndex("ragione"));
    	        int latitude_farmacia = (int) (data.getDouble(data
    	                .getColumnIndex("lat")) * 1E6);
    	        int longitude_farmacia = (int) (data.getDouble(data
    	                .getColumnIndex("lng")) * 1E6);
    	        GeoPoint point = new GeoPoint(latitude_farmacia,longitude_farmacia);
    	        OverlayItem overlayitem = new OverlayItem(point,ragione_farmacia,indirizzo_farmacia);
    	        itemizedoverlay.addOverlay(overlayitem);
    	    } while (data.moveToNext());
            mapOverlays.add(itemizedoverlay);
    	    // disclamer
            ImageView img = (ImageView) findViewById(R.id.image_mia_map);
            img.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
                    LocationListener mlocListener = new MyLocationListener();
                    mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
                }
            });
        }
        /* Class My Location Listener */
        public class MyLocationListener implements LocationListener{
    	    @Override
    	    public void onLocationChanged(Location loc){
    		    loc.getLatitude();
    		    loc.getLongitude();
    	        GeoPoint mio_point = new GeoPoint((int)(loc.getLatitude()*1E6), (int)(loc.getLongitude()*1E6));
    	        mapView.getController().setCenter(mio_point);
    	        mapView.getController().animateTo(mio_point);
    	    }
    	    @Override
    	    public void onProviderDisabled(String provider){
    	    	Toast.makeText( getParent(),"Gps disabilitato",Toast.LENGTH_SHORT ).show();
    	    }
    	    @Override
    	    public void onProviderEnabled(String provider){
    	    	Toast.makeText( getParent(),"Gps abilitato",Toast.LENGTH_SHORT).show();
    	    }
    	    @Override
    	    public void onStatusChanged(String provider, int status, Bundle extras){
    	
    	    }
        }
    }
    dunque come vedete, ho una mappa che fissa milano come centro, e con il requestLocationUpdates che funziona ora ogni 60000 millisec (devo riuscire a farla andare una sola volta, se ha preso i valori dal gps), grabba la posizione e mi sposta la mappa ad essa (avendo quindi nuovi latitudine e longitudine).
    io devo riuscire a far rifare la query che ho sotto // farmacie, passandogli i nuovi latitudine e longitudine presi: ho provato a fare un invalidate ma niente funzia.
    Non sò proprio come fare, idee?

  2.  
  3. #2
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    229

    Ringraziamenti
    27
    Ringraziato 77 volte in 35 Posts
    Predefinito

    Non ho mai lavorato con le mappe, ma mi viene un dubbio.
    Tu richiedi gli aggiornamenti al location service, passandogli un listener che imposta la posizione sulla mappa, e nella riga immediatamente successiva rileggi le coordinate dalla mappa per fare la query.
    Non sono così sicuro che il tuo listener sia già stato chiamato e che quindi tu abbia già le nuove coordinate.
    Forse potresti richiamare la query dal listener, o salvarti da qualche parte le coordinate correnti della mappa, siano esse di milano o ricavate dal gps, e su base temporizzata (timer) o su qualche altro evento fare la query su quelle che sono le ultime coordinate impostate.
    Sinceramente secondo me il più comodo è dentro al listener, perchè è il momento in cui cambi la posizione (magari con una callback in modo da disaccoppiare la logica di ricerca farmacie dall'attività del listener)

    spero di averci preso, ripeto, non ho mai lavorato con le mappe.
    Felice possessore di un LG O1 con GingerLOL 1.5.2 e di un Mediacom Smartpad 810c con Pistoneone 4.2.1 / 5.0 Samsung Galaxy Tab 10.1 P7510 (originale per ora) Mediacom Smartpad 715i (ROM smartpao 2.1), Mediacom Smartpad 842i (ROM smartpao 2.0)
    Mini-Forum-FAQ per Mediacom Smartpad 810c

  4. #3
    Senior Droid L'avatar di zak84


    Registrato dal
    Jan 2011
    Messaggi
    890
    Smartphone
    Google Nexus 5 32GB Black

    Ringraziamenti
    13
    Ringraziato 62 volte in 60 Posts
    Predefinito

    alla fine ho risolto svuotando il layer e rifacendo la query. poco male.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy