2012-04-02 6 views
1

Ich habe Breiten- und Längengrad globale Variablen gemacht.Wie werden globale Breiten- und Längengradvariablen erstellt?

Es funktioniert gut in der MyLocationListener Klasse, wie sie die aktuelle Standort geografische Breite und Länge angezeigt, aber wenn es url (http://maps.google.com/maps?" + "saddr=" + currentLattitude + "," + currentLongtitude + "&daddr=27.11,85.11")) in webview lädt, lädt er den Wert 0 und 0.

Warum?

public class ShowMapActivity extends Activity { 

private WebView webView; 
double currentLattitude; 
double currentLongtitude; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.webview); 

    LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    LocationListener mlocListener = new MyLocationListener(); 
    mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
      mlocListener); 

    webView = (WebView) findViewById(R.id.webView1); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new WebViewClient()); 
    webView.loadUrl("http://maps.google.com/maps?" + "saddr=" 
      + currentLattitude + "," + currentLongtitude 
      + "&daddr=27.11,85.11"); 

} 

public class MyLocationListener implements LocationListener 
{ 
    @Override 
    public void onLocationChanged(Location loc) 
    { 
     currentLattitude = loc.getLatitude(); 

     currentLongtitude = loc.getLongitude(); 

     Toast.makeText(
       getApplicationContext(), 

       "Latitude is: " + currentLattitude + " Longitude is: " 
         + currentLongtitude, 

       Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onProviderDisabled(String provider) 
    { 

     Toast.makeText(getApplicationContext(), 

     "Gps Disabled", 

     Toast.LENGTH_SHORT).show(); 

    } 

    @Override 
    public void onProviderEnabled(String provider) 
    { 

     Toast.makeText(getApplicationContext(), "Gps Enabled", 

     Toast.LENGTH_SHORT).show(); 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) 
    { 

    } 
} 
} 
+0

Problem ist, dass Sie GPS-Werte anfordern und dann in den nächsten Zeilen versuchen Sie, sie sofort auf Webview URL anzuwenden. Die GPS-Werte sind noch nicht fertig. Bewegen Sie das Setzen der URL in WebView auf onLocationChanged und es sollte funktionieren – AndroidGecko

+0

zeigt nichts an !! – captaindroid

Antwort

3

Versuchen dieses Stück Code setzen in onLocationChanged

webView = (WebView) findViewById(R.id.webView1); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.setWebViewClient(new WebViewClient()); 
webView.loadUrl("http://maps.google.com/maps?" + "saddr=" 
     + currentLattitude + "," + currentLongtitude 
     + "&daddr=27.11,85.11"); 
+0

Schrieb folgenden Code, aber nicht funktioniert, lädt Webview URL aber nicht nur eine weiße Ansicht angezeigt. '@Override public void OnLocationChanged (Ort loc) \t \t { \t \t \t currentLattitude = loc.getLatitude(); \t \t \t currentLongtitude = loc.getLongitude(); \t \t \t webView = (Webansicht) findViewById (R.id.webView1); \t \t \t webView.getSettings(). SetJavaScriptEnabled (true); \t \t \t webView.setWebViewClient (neuer WebViewClient()); \t \t \t webView.loadUrl ("http://maps.google.com/maps?" + "Saddr =" + currentLattitude \t \t \t \t \t + "" + currentLongtitude + "& DADDR = 27.11,85.11") ; \t \t \t \t \t \t \t \t} ' – captaindroid

+0

finden Sie aktuelle Breiten- und Längenwert unter Location Methode, aber hat nicht funktioniert zu lenken. – captaindroid

+0

Und hast du versucht, die URL zu lesen, ohne sie bereits im Webview zu zeigen? Ich habe auch die onLocationChanged-Methode in einer Testanwendung verwendet und selbst wenn ich an der gleichen Stelle war, zeigte es einige verschiedene Werte (unterschiedlich in der Bedeutung der 10. Stelle nach dem Komma). Vielleicht wird die Webansicht geladen, erhält aber bereits andere Werte und lädt sie wieder und wieder? – TimVK

1

fügen Sie diese in onLocationChanged(...)

webView.loadUrl("http://maps.google.com/maps?" + "saddr=" 
      + currentLattitude + "," + currentLongtitude 
      + "&daddr=27.11,85.11"); 
+0

zeigt nichts außer weißer Ansicht an. – captaindroid

1

Ihr Doppel Variable Sie die Standardwerte in unter line.Because geben vor der Aktualisierung Die Position unterhalb der Linie wird ausgeführt

webView.loadUrl("http://maps.google.com/maps?" + "saddr=" 
      + currentLattitude + "," + currentLongtitude 
      + "&daddr=27.11,85.11"); 
1

Weil Sie die WebView in onCreate() Funktion öffnen und Sie erhalten die Position in onLocationChanged() Funktion. was es kommt nach, um dieses Problem zu lösen, wenn Sie immer wenn Speicherort möchten Sie aktualisieren die Web-Ansicht, nur in der Funktion onLocationChanged() setzen, wenn Sie es laden möchten, sobald Sie boolesche Variable in Ihrem onLocationChanged() verwenden können, um dies anzuzeigen Es ist das erste Mal, dass Sie in diese Funktion gehen.

für Effizienz: Sie entfernen die Updates besser, nachdem Sie die Position erhalten haben, um Batterieverbrauch zu vermeiden.

Verwandte Themen