簡體   English   中英

從locationManager獲取緯度和經度值

[英]get Latitude and Longitude values from locationManager

我正在嘗試將Lat&Lon值用於我創建的函數,但是我找不到找到如何將此類值從類“ Locationer”獲取到MainActivity的方法。 我創建了一個名為getLat()的新方法,但我需要一個位置變量才能通過此方法獲取緯度值。 我不知道如何獲得該“位置”以及它在課堂上的來源。 我已經在自己的設備上對其進行了測試。

定位器類:

import android.app.Activity;
import android.location.Location;
import android.location.LocationListener;
import android.os.Bundle;
import android.util.Log;

public class Locationer extends Activity implements LocationListener {

    @Override
    public void onLocationChanged(Location location) {
        location.getLatitude();
        location.getLongitude();

        String myLocation = "Latitude = " + location.getLatitude() + " Longitude = " + location.getLongitude();

        //I make a log to see the results
        Log.e("MY CURRENT LOCATION", myLocation);

    }

    public double getLat(Location location)
    {
        return location.getLatitude();
    }

    @Override
    public void onStatusChanged(String s, int i, Bundle bundle) {

    }

    @Override
    public void onProviderEnabled(String s) {

    }

    @Override
    public void onProviderDisabled(String s) {

    }
}

我的MainAcitivity.java中的代碼:

LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

        Locationer locationListener = new Locationer();

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

        lat = **NEED YOUR HELP TO GET THIS VALUE**
        lon = **NEED YOUR HELP TO GET THIS VALUE**

        queryBooks(lat, lon);

設置位置管理器后,您將沒有任何經度或緯度。 找到位置后將調用onLocationChanged()。 看這里。

您可以執行queryBooks(lat, lon); onLocationChanged()

或者,您可以使用getLastKnownLocation(LocationManager.GPS_PROVIDER); 但它的准確性較低,並且可以為您提供舊位置。

在這里,您可以在MainActivity中執行以下操作:

private LocationManager mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

private LocationListener mLocationListener = new LocationListener() {
    @Override
    public void onLocationChanged(Location location) {
        queryBooks(location.getLatitude(), location.getLongitude());
    }

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

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

    @Override
    public void onProviderDisabled(String provider) {

    }


};

protected void onResume() {
    super.onResume();
    //every second
    int minTime = 1000;
    //minDistance between two update
    int minDistance = 10;
    mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance, mLocationListener);
};

@Override
protected void onPause() {
    mLocationManager.removeUpdates(mLocationListener);
    super.onPause();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM