获取一两座建筑物的纬度,经度值,而没有得到确切的纬度和经度值。

public class GPSLocatorActivity extends MapActivity implements OnClickListener {
MapView mapView = null;
MapController mapController = null;
MyLocationOverlay whereAmI = null;
private Button bdiffaddr, bnext;
MyLocation myLocation;
GeoPoint p = null;
MapController mc = null;
public static LocationManager locManager;
protected ProgressDialog progressDialog;
public static double latitude, longitude;
public String TAG = "GPSLocatorActivity";

protected boolean isLocationDisplayed() {
    return whereAmI.isMyLocationEnabled();
}
protected boolean isRouteDisplayed() {
    return false;
}
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gpslocation);
    initialiseviews();
    // onclick listeners
    onclicklisteners();
    currentLocLatLong();
    // new GoogleMapAsyncTask().execute();
    GPSLocatorActivity.this.runOnUiThread(new Runnable() {
        public void run() {
            mapView = (MapView) findViewById(R.id.mapView);
            mapView.setBuiltInZoomControls(true);
            mapController = mapView.getController();
            mapController.setZoom(15);
            whereAmI = new MyLocationOverlay(GPSLocatorActivity.this,
                    mapView);
            mapView.getOverlays().add(whereAmI);
            mapView.postInvalidate();
        }
    });

}
public class GoogleMapAsyncTask extends AsyncTask<Void, Void, Void> {
    protected Void doInBackground(Void... voids) {
        mapView = (MapView) findViewById(R.id.mapView);
        mapView.setBuiltInZoomControls(true);
        mapController = mapView.getController();
        mapController.setZoom(15);
        whereAmI = new MyLocationOverlay(GPSLocatorActivity.this, mapView);
        mapView.getOverlays().add(whereAmI);
        mapView.postInvalidate();
        return null;
    }

}
private void currentLocLatLong() {
    locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100L,
            100.0f, locationListener);
    Location location = locManager
            .getLastKnownLocation(LocationManager.GPS_PROVIDER);
    if (location != null) {
        latitude = location.getLatitude();
        longitude = location.getLongitude();
    }
}
private void updateWithNewLocation(Location location) {
        String latLongString = "";
    Log.d("Lat: + latitude + \nLong: + longitude", "Lat:" + latitude
            + "\nLong:" + longitude);
    if (location != null) {
        latitude = location.getLatitude();
        longitude = location.getLongitude();
        latLongString = "Lat:" + latitude + "\nLong:" + longitude;
    } else {
        latLongString = "No location found";
    }
}
public void onResume() {
    super.onResume();
    whereAmI.enableMyLocation();
    whereAmI.runOnFirstFix(new Runnable() {
        public void run() {
            mapController.setCenter(whereAmI.getMyLocation());
        }
    });

}
public void onPause() {
    super.onPause();
    whereAmI.disableMyLocation();
}
public void onLocationChanged(Location location) {
    if (location != null) {
        latitude = location.getLatitude();
        longitude = location.getLongitude();
        @SuppressWarnings("unused")
        String currentLocation = "Lat: " + latitude + " Lng: " + longitude;
        // txted.setText(currentLocation);
        p = new GeoPoint((int) latitude * 1000000,
                (int) longitude * 1000000);
        mc.animateTo(p);
    }
}
public final LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
        updateWithNewLocation(location);
    }
    public void onProviderDisabled(String provider) {
        updateWithNewLocation(null);
    }
    public void onProviderEnabled(String provider) {
    }
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
};

please help if anyone has idea how to get the accuracy upto one or two meter distance.

最佳答案

抱歉,您不能通过编程提高准确性。随着接收更多卫星或使用更好的GPS硬件或扩展系统(如航空中使用的WAAS),精度会提高。此外,在建筑物外且远离卫星的直接视线中的任何障碍物,接收效果更好。

要确定您接收了多少颗卫星,您可以在此处查看:https://stackoverflow.com/a/8747795/1127492

顺便说一句,2米是非常具有挑战性的。有关准确性的更多信息,请参见此处:http://www.gps.gov/systems/gps/performance/accuracy/#difference

10-07 18:45