Как сделать широту и долготу глобальными переменными? - PullRequest
1 голос
/ 02 апреля 2012

Я сделал глобальные переменные широты и долготы.

Он отлично работает в классе MyLocationListener, так как отображает текущую широту и долготу местоположения, но когда он загружает URL (http://maps.google.com/maps?" + "saddr=" + currentLattitude + "," + currentLongtitude + "&daddr=27.11,85.11")) в веб-представлении, онзагружает значения 0 и 0.

Почему?

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)
    {

    }
}
}

Ответы [ 4 ]

3 голосов
/ 02 апреля 2012

Попробуйте поместить этот кусок кода в 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"); 
1 голос
/ 02 апреля 2012

Поскольку вы открываете WebView в функции onCreate() и получаете местоположение в функции onLocationChanged(). после чего, чтобы решить эту проблему, если вы хотите всегда обновлять веб-представление при изменении местоположения, просто поместите его в функцию onLocationChanged(), если вы хотите, чтобы он загружался, как только вы можете использовать логическую переменную в вашем onLocationChanged() чтобы указать, что вы впервые используете эту функцию.

для эффективности: лучше удалить обновления после того, как вы получите местоположение, чтобы избежать разряда батареи.

1 голос
/ 02 апреля 2012

Ваша двойная переменная дает вам значения по умолчанию в строке ниже. Потому что перед обновлением местоположения ниже строки выполняется

webView.loadUrl("http://maps.google.com/maps?" + "saddr="
            + currentLattitude + "," + currentLongtitude
            + "&daddr=27.11,85.11");
1 голос
/ 02 апреля 2012

добавить это в onLocationChanged(...)

 webView.loadUrl("http://maps.google.com/maps?" + "saddr="
            + currentLattitude + "," + currentLongtitude
            + "&daddr=27.11,85.11");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...