从locationManager获取纬度和经度值

时间:2015-08-21 14:22:09

标签: java android geolocation

我正在尝试使用Lat&我创建的函数的Lon值,但是我找不到如何将这个值从“Locationer”类获取到MainActivity的方法。 我创建了一个名为 getLat()的新方法,但我需要一个位置变量才能使用此方法获取纬度值。 我不知道如何获得这个“位置”以及它在课堂上的来源。 我正在自己的设备上测试它。

定位器类:

checked

我的MainAcitivity.java中的代码:

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

    }
}

1 个答案:

答案 0 :(得分:0)

设置LocationManager后,您将没有直接经度或经度。 onLocationChanged()将在找到位置时被调用。 See here.

您可以在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();
}