Autore Topic: Help passaggio lat lng a mappa  (Letto 721 volte)

Offline caos

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    SDK
Help passaggio lat lng a mappa
« il: 16 Marzo 2011, 22:01:39 CET »
0
Ciao ragazzi   ho un grosso problema.
Praticamente un dei "compiti " della mia applicazione è che in base alla latitudine e longitudine fornita dall'utente fa visualizzare la mappa centrata nei punti inseriti.

Di seguito riporto i codici :

Codice MAPPA [Mappa_Cat]: 
Codice: [Seleziona]
public class Mappa_Cat extends MapActivity{

            private MapView map;
            private MapController controller;
            private Double lat;
            private Double lng;
           
            public Double Set_Lat(Double Latitidine){                         
                         return this.lat=Latitidine*1E6;                   
            }
           
                public Double Set_Lng(Double Longitudine){
                         return this.lng=Longitudine*1E6;
                 }
               
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.mappa);
                map = (MapView)this.findViewById(R.id.mapView);
                funzione();
            }
          private void funzione(){
                       controller = map.getController();
                        map.setSatellite(true);
                        map.setStreetView(false);
                        map.displayZoomControls(true);
                        controller.setZoom(12);
                        GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());
                        controller.setCenter(point);
                        controller.animateTo(point);
            }

         
   protected boolean isRouteDisplayed() {
        return false;
        }

}

Ho creato le funzioni Set_Lat e Set_Lng vengono richimate da un'altra sotto attività passandogli i valori di latitudine e longitudine : nel seguente modo :

Codice: [Seleziona]
private Mappa_Cat nuova = new Mappa_Cat();
nuova.Set_Lat(38.115619);
nuova.Set_Lng(12.392578);
.
.
 lv1=(ListView)findViewById(R.id.ListView_Elenco);
                 lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr));
                 lv1.setTextFilterEnabled(true);
                 
                 lv1.setOnItemClickListener(new OnItemClickListener() {
                 public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                        AlertDialog.Builder adb=new AlertDialog.Builder(Lista_con_Mappa.this);
                         adb.setTitle("Scelta");
                         adb.setMessage("Vuoi vedere la Mappa di  : "+lv1.getItemAtPosition(position));                         
                         adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int whichButton) {
                                       
// collegamento alla sotto attività che mostra la mappa.
                                        Intent mapp = new Intent(getApplicationContext(),Mappa_Cat.class);
                                        startActivity(mapp);
                                       
                                }
                         });
                         adb.setNegativeButton("Annulla", null);
                         adb.show();
                 }
                 });


Il problema sorge quando dalla sotto attività in cui ho richiamato Set_Lat e Set_Lng creo il collegamento alla sottoattività della mappa [codice postato in precendenza.]


Vi posto il log_Cat :

Codice: [Seleziona]
03-16 20:53:07.634: ERROR/AndroidRuntime(893): FATAL EXCEPTION: main
03-16 20:53:07.634: ERROR/AndroidRuntime(893): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.ioprogrammo.smu/it.ioprogrammo.smu.Mappa_Cat}: java.lang.NullPointerException
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at android.os.Looper.loop(Looper.java:123)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at android.app.ActivityThread.main(ActivityThread.java:4627)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at java.lang.reflect.Method.invokeNative(Native Method)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at java.lang.reflect.Method.invoke(Method.java:521)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at dalvik.system.NativeStart.main(Native Method)
03-16 20:53:07.634: ERROR/AndroidRuntime(893): Caused by: java.lang.NullPointerException
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at it.ioprogrammo.smu.Mappa_Cat.funzione(Mappa_Cat.java:43)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at it.ioprogrammo.smu.Mappa_Cat.onCreate(Mappa_Cat.java:30)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     ... 11 more
03-16 20:53:07.685: WARN/ActivityManager(58):   Force finishing activity it.ioprogrammo.smu/.Mappa_Cat
03-16 20:53:07.705: WARN/ActivityManager(58):   Force finishing activity it.ioprogrammo.smu/.Lista_con_Mappa
03-16 20:53:08.205: WARN/ActivityManager(58): Activity pause timeout for HistoryRecord{450646f0 it.ioprogrammo.smu/.Mappa_Cat}
03-16 20:53:09.714: INFO/Process(893): Sending signal. PID: 893 SIG: 9
03-16 20:53:09.764: INFO/ActivityManager(58): Process it.ioprogrammo.smu (pid 893) has died.
03-16 20:53:09.814: INFO/WindowManager(58): WIN DEATH: Window{44ff10c0 it.ioprogrammo.smu/it.ioprogrammo.smu.Lista_con_Mappa paused=true}
03-16 20:53:09.814: INFO/WindowManager(58): WIN DEATH: Window{4509fa10 it.ioprogrammo.smu/it.ioprogrammo.smu.Smu paused=false}
03-16 20:53:09.825: INFO/WindowManager(58): WIN DEATH: Window{450a03b0 it.ioprogrammo.smu/it.ioprogrammo.smu.Lista_con_Mappa paused=true}
03-16 20:53:10.075: INFO/UsageStats(58): Unexpected resume of com.android.launcher while already resumed in it.ioprogrammo.smu
03-16 20:53:10.324: WARN/InputManagerService(58): Got RemoteException sending setActive(false) notification to pid 893 uid 10037
03-16 20:53:16.095: DEBUG/dalvikvm(590): GC_EXPLICIT freed 305 objects / 13368 bytes in 177ms
03-16 20:55:29.244: DEBUG/SntpClient(58): request time failed: java.net.SocketException: Address family not supported by protocol
03-16 21:00:29.285: DEBUG/SntpClient(58): request time failed: java.net.SocketException: Address family not supported by protocol


Quando mi dice :
03-16 20:53:07.634: ERROR/AndroidRuntime(893): Caused by: java.lang.NullPointerException
03-16 20:53:07.634: ERROR/AndroidRuntime(893):     at it.ioprogrammo.smu.Mappa_Cat.funzione(Mappa_Cat.java:43)

fa riferimento a questa riga di codice :
Codice: [Seleziona]
GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());
Help Siete la mie unica speranza. :'( :-X :'( :'( :'( :'( :'(

Offline caos

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    SDK
Re:Help passaggio lat lng a mappa
« Risposta #1 il: 17 Marzo 2011, 09:45:47 CET »
0
Up nessuno può aiutarmi ? :'(

Offline caos

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    SDK
Re:Help passaggio lat lng a mappa
« Risposta #2 il: 17 Marzo 2011, 16:52:34 CET »
0
Ecco il codice in formato Java :
codice che serve per inviare i paramentri alla classe Mappa_Cat :
Codice (Java): [Seleziona]
Double Lat  = 38.115619 ;
Double Lng = 12.392578;
Intent intent = new Intent(getApplicationContext(),Mappa_Cat.class);
String pkg=getPackageName();
 intent.putExtra(pkg+".myLat", Lat);
intent.putExtra(pkg + "MyLng", Lng);
startActivity(intent);
                                       

Classe che rivece i paramentri :
Codice (Java): [Seleziona]
public class Mappa_Cat extends MapActivity{
            private MapView map;
            private MapController controller;
            private Double lat;
           private Double lng;
               
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.mappa);
                map = (MapView)this.findViewById(R.id.mapView);
                funzione();
            }
          private void funzione(){
                   controller = map.getController();
                        map.setSatellite(true);
                        map.setStreetView(false);
                        map.displayZoomControls(true);
                        controller.setZoom(12);
                        //centrata a Palermo
                   
                        //lat = 38.115619*1E6;
                        //lng = 12.392578*1E6;
                        Intent intent=getIntent();
                                 String pkg=getPackageName();

                                Double lat=intent.getDoubleExtra(pkg+"MyLat", defaultValue);
                                Double lng=intent.getDoubleExtra(pkg+"MyLng", defaultValue);

                                 GeoPoint point = new GeoPoint( lat.intValue(), lng.intValue());
                        controller.setCenter(point);
                        controller.animateTo(point);
            }

         
   protected boolean isRouteDisplayed() {
        return false;
        }

}

Al momento non so come settare la funzione getDoubleExtra inquanto se inserisco il valore di Default mi centra la mappa nelle coordinate di default e non in quelle che gli invio :
Codice (Java): [Seleziona]
        Double lat=intent.getDoubleExtra(pkg+"MyLat", defaultValue);
                                Double lng=intent.getDoubleExtra(pkg+"MyLng", defaultValue);

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:Help passaggio lat lng a mappa
« Risposta #3 il: 21 Marzo 2011, 12:48:10 CET »
0
sei sicuro che lat e lng siano entrambi diversi da null?
Sembra che almeno uno dei due lo sia.....

quando inserisci gli extra, usi

Codice (Java): [Seleziona]
intent.putExtra(pkg+".myLat", Lat);
intent.putExtra(pkg + "MyLng", Lng);

mentre quando li prendi, utilizzi un'altra nomenclatura

Codice (Java): [Seleziona]
Double lat=intent.getDoubleExtra(pkg+"MyLat", defaultValue);
Double lng=intent.getDoubleExtra(pkg+"MyLng", defaultValue);

.myLat quando invii, e MyLat quando prendi.
Dovrebbe essere questo il problema.
Prova e fammi sapere.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/