Autore Topic: Centrare mappa usando la rete e non il GPS?  (Letto 918 volte)

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Centrare mappa usando la rete e non il GPS?
« il: 28 Agosto 2012, 00:45:58 CEST »
0
Ciao a tutti, sono riuscito a centrare la mappa di una mia applicazione usando il GPS, anche se devo effettuare altri test, in pratica all' avvio mi trovo direttamente sulla mia posizione con la mappa centrata. Se non ho il GPS la localizzazione avviene mediante la rete, ma ovviamente mi si apre la mappa su una località qualunque e devo cercare la mia posizione, è possibile centrare la mappa direttamente sulla posizione all' avvio?

Ho usato questo codice con overlay:

Codice: [Seleziona]
MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
        List<Overlay> overlays = mapView.getOverlays();
        overlays.add(myLocationOverlay);
        myLocationOverlay.enableMyLocation();

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Re:Centrare mappa usando la rete e non il GPS?
« Risposta #1 il: 30 Agosto 2012, 00:47:59 CEST »
0
Emh....nessuno proprio?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Centrare mappa usando la rete e non il GPS?
« Risposta #2 il: 30 Agosto 2012, 15:12:14 CEST »
+1
Prova

Codice (Java): [Seleziona]
        myLocationOverlay.runOnFirstFix(new Runnable() {

            @Override
            public void run() {
                GeoPoint myLocation = myLocationOverlay.getMyLocation();
                mMapView.getController().setCenter(myLocation);
            }
        });

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Re:Centrare mappa usando la rete e non il GPS?
« Risposta #3 il: 31 Agosto 2012, 15:52:06 CEST »
0
Ciao, grazie della risposta, ma esattamente dove inserire il metodo? Ho dichiarato che l' activity estenda la classe Runnable, però quel metodo dove va inserito? Se lo inserisco all' interno dell' onCreate ho degli errori:

Codice: [Seleziona]
Multiple markers at this line
        - The method run() of type new Runnable(){} must override a superclass
         method
        - implements java.lang.Runnable.run

e
Codice: [Seleziona]
Cannot make a static reference to the non-static method getController() from the type MapView
Stavo provando a fare una cosa simile:

Codice: [Seleziona]
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5, 1, locationListener);
              location= locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
              MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
          List<Overlay> overlays = mapView.getOverlays();
          overlays.add(myLocationOverlay);
          myLocationOverlay.enableMyLocation();       
              mapController.setCenter(myLocationOverlay.getMyLocation());

Ma ho nullpointer all' ultima riga....alla fine le coordinate non sono disponibili.....come mai?
« Ultima modifica: 31 Agosto 2012, 18:27:21 CEST da Darèios89 »

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Re:Centrare mappa usando la rete e non il GPS?
« Risposta #4 il: 01 Settembre 2012, 11:06:04 CEST »
0
Sembra che adesso funzioni, ho semplicemente usato un controllo, al posto di quel metodo che con le interfacce mi dava problemi:

Codice: [Seleziona]
if(!locationManager.isProviderEnabled("gps")){  //Non c' è il gps, utilizzo la rete
               
              locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5, 1, locationListener);
              location= locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
              MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
          List<Overlay> overlays = mapView.getOverlays();
          overlays.add(myLocationOverlay);
          myLocationOverlay.enableMyLocation();       
          GeoPoint point = new GeoPoint((int)(location.getLatitude() * 1E6), (int)(location.getLongitude() * 1E6));
          GeoPoint myLocation = myLocationOverlay.getMyLocation();
          Toast.makeText(this, "Ecco la tua posizione: "+location.getLatitude(), Toast.LENGTH_LONG).show();
      }

Grazie mille. :)