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:
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).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){ } } }
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?

LinkBack URL
About LinkBacks
Rispondi quotando